使用 mixer 混音器模組實作遊戲音效控製
閱讀 2:53·字數 868·發佈
Youtube 頻道
訂閱 375
訂閱 375
Pygame 載入、播放、暫停、停止音效,以及設定迴圈、音量、最大播放時間影片示範 YouTube
前言
在遊戲開發中,音效是升階玩家沈浸感的重要元素。Python Pygame 套件提供了mixer
混音器模組,用於處理遊戲中的音訊效果。本文將介紹如何使用mixer
模組載入和控製遊戲音效。
初始化 mixer 模組
在使用mixer
模組前,需要先進行初始化,如果已經呼叫了pygame
的init
函式,則可以省略對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_volume
和set_volume
方法,可用於取得和設定音效的音量,音量是取值範圍在0
到1
之間的浮點數。
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