使用 mixer 混音器模組實作遊戲音效控製
閱讀 2:53·字數 868·發佈
Youtube 頻道
訂閱 480
訂閱 480
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