URLhttps://learnscript.net/zh-hant/pygame/mixer/
    複製連結移至說明  範例

    使用 mixer 混音器模組實作遊戲音效控製

    閱讀 2:53·字數 868·發佈 
    Youtube 頻道
    訂閱 375

    前言

    在遊戲開發中,音效是升階玩家沈浸感的重要元素。Python Pygame 套件提供了mixer混音器模組,用於處理遊戲中的音訊效果。本文將介紹如何使用mixer模組載入和控製遊戲音效。

    初始化 mixer 模組

    在使用mixer模組前,需要先進行初始化,如果已經呼叫了pygameinit函式,則可以省略對mixer的明確初始化。

    import pygame
    pygame.mixer.init()

    載入音效檔案

    Pygame 區分音效和背景音樂的處理方式,對於較小的音效檔案,我們可以使用Sound類別。如果音效被頻繁播放,可將相關的Sound物件長期保留。

    jump14 = pygame.mixer.Sound("Jump14.wav")
    hurt2 = pygame.mixer.Sound("Hit_Hurt2.wav")

    播放控製

    Sound物件的play方法,可用於播放音效,該方式是非同步的,呼叫後會立即傳回,不會阻塞程式執行。

    play(loops=0, maxtime=0, fade_ms=0)

    loops 參數

    用於控製播放次數,預設值預設0表示播放1次,設定為-1表示無限迴圈播放。

    maxtime 參數

    表示最大播放時長,以毫秒為單位。

    jump14.play() # 播放跳躍音效
    hurt2.play() # 播放受傷音效
    # …
    jump14.play(loops=-1) # 無限迴圈
    hurt2.play(loops=2) # 播放3次
    # …
    jump14.play(loops=-1, maxtime=2000) # 最多點傳送放2秒

    Sound物件的stop方法,可用於停止播放音效。

    stop()

    jump14.stop() # 停止音效

    音量控製

    Sound物件的get_volumeset_volume方法,可用於取得和設定音效的音量,音量是取值範圍在01之間的浮點數。

    get_volume()
    set_volume(value)

    current_volume = jump14.get_volume() # 取得目前音量
    jump14.set_volume(0.5) # 設定音量為 50%

    全域音效控製

    mixer模組提供一些全域控製函式,用於對多個音效進行控製,其中pause方法可暫停所有播放中的音效,unpause方法可恢復播放所有暫停的音效,stop方法可停止所有播放中的音效。

    pause()
    unpause()
    stop()

    下面的函式toggle_pause可用於切換音訊的播放和暫停狀態。

    paused = False
    
    def toggle_pause(): global paused paused = not paused if paused: pygame.mixer.pause() else: pygame.mixer.unpause()

    內容分類

    取得原始碼

    本部分所使用的原始碼,可在 GitHub 上瀏覽,網址如下:

    https://github.com/codebeatme/pygame/tree/master/src/zh-hant/mixer

    講解影片

    Pygame 載入、播放、暫停、停止音效,以及設定迴圈、音量、最大播放時間·YouTube