最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

游戲開發(fā)中的音樂和音效怎么去制作

2022-09-21 15:18 作者:游戲開發(fā)RAIN  | 我要投稿

游戲開發(fā)中分背景音樂和音效,同時每個游戲的設(shè)置里面都會有開關(guān),是否開關(guān)音樂和音效,所以我們做音樂管理模塊的時候都要充分的考慮進去。Cocos Creator提供了一個AudioSource組件用來播放音樂或音效,我們整個聲音管理模塊就利用它來支撐最終的音樂音效的播放。

我們創(chuàng)建一個音樂管理的單例組件類, 在框架初始化的時候,我們把它實例化出來,加到GameApp這個節(jié)點上。然后調(diào)用管理類單例的Init接口,在Init接口中,往GameApp節(jié)點上添加一些AudioSource的組件實例。添加幾個,可以根據(jù)設(shè)計來決定,可以動態(tài)的擴展,也可以寫死固定的幾個AudioSource,這樣整個游戲就固定了能支持多少個音效同時播放。我在這個項目里面設(shè)置了一個MAX_SOUNDS為8。背景音樂專門有一個單獨放置AudioSource組件用來播放。同時我們要從本地獲取用戶的設(shè)置,看看是否禁止播放背景音樂和音效。所以聲音管理類的數(shù)據(jù)成員如圖

MAX_SOUNDS: 最大能支持的同時播放的音效的數(shù)目,目前是8,如果是第9個音效播放的話,就會把原來的第0個給沖掉。

MUSIC_MUTE_KEY: 從本地讀取背景是否音樂靜音的key,用這個key去從本地讀取配置;

SOUND_MUTE_KEY: 從本地讀取音效是否靜音的key, 用這個key從本地讀取配置;

nowIndex: 當(dāng)前音效使用到了第幾個音效組件實例,如果超過MAX_SOUNDS,又從0開始,每次播放一個音效nowIndex會往后+1, 這樣8個AudioSource組件輪流播放音效,最多同時支持8個音效。如果超過8個,又從第0個開始;

sounds: 音效的所有AudioSource組件集合;

bgMusic: 播放背景音樂的AudioSource組件;

isMusicMute: 背景音樂是否靜音,初始值從本地配置讀取;

isSoundMute: 音效是否靜音, 初始值從本地配置讀取;

在Init函數(shù)里面我們初始化對應(yīng)的AudioSource組件實例和相關(guān)參數(shù),如代碼截圖:

28~31行for循環(huán),將AudioSource組件實例創(chuàng)建出來,并加入到節(jié)點(GameApp)上。33行創(chuàng)建播放背景音樂的AudioSource聲音組件的實例。36~45行從本地讀取是否靜音的初始值。

接下來分析一下播放音樂音效的接口playBgMusic/stopBgMusic,


playBgMusic:

clip: 函數(shù)參數(shù),聲音資源對象;

isLoop: 函數(shù)參數(shù),是否循環(huán)播放;

進入函數(shù)后,將聲音clip設(shè)置到背景音樂的AudioSource組件實例上,如果是靜音,就把聲音的大小調(diào)成0,然后調(diào)用AudioSource組件的play函數(shù)。

stopBgMusic: 直接調(diào)用背景音樂組件實例的停止接口,停止播放。


接下來分析接口playSound,如圖

如果當(dāng)前音效靜音,直接返回不播放,否者以當(dāng)前nowIndex為索引的AudioSource來播放聲音,然后再nowIndex++, 下一次播放音效就到下一個AudioSource組件了。如果nowIndex超過了最大的數(shù)目,又從0開始,這樣最早的那個音效就會被沖掉,因為游戲音效本身時間就短,所以這種設(shè)計方式也是可以的,簡單方便。

接下來分析接口setMusicMute/setSoundMute

當(dāng)用戶在設(shè)置界面設(shè)置音樂音效是否靜音的時候,可以調(diào)用這兩個函數(shù),設(shè)置變量值,然后再把最新的變量值保存到本地存儲,下次游戲啟動的時候能獲取上一次保存的值。

本節(jié)的聲音管理模塊設(shè)計就講解到這里,大家可以對著代碼來閱讀,掌握鞏固好這些代碼。

歡迎加入我的游戲開發(fā)交流群,

給你分享更多游戲源碼及其他學(xué)習(xí)素材


游戲開發(fā)中的音樂和音效怎么去制作的評論 (共 條)

分享到微博請遵守國家法律
武安市| 砚山县| 铜梁县| 周宁县| 扬州市| 宜良县| 德钦县| 石渠县| 苍山县| 宁城县| 客服| 奉贤区| 页游| 腾冲县| 项城市| 遂昌县| 沙湾县| 钟山县| 明光市| 镇坪县| 新密市| 安泽县| 天柱县| 平邑县| 高州市| 宝应县| 商丘市| 循化| 万宁市| 池州市| 清水县| 宣城市| 苍溪县| 长白| 永丰县| 神农架林区| 濉溪县| 蓝山县| 秦安县| 通州区| 林口县|