一文教你Cocos Creator如何實現音頻池工具的封裝
引言
關鍵詞:音效管理、音頻池、Cocos Creator
多媒體內容(文本、音頻、視頻、圖片、動畫等)是一款應用能否在“同質化”嚴重的市場中脫穎而出的關鍵。
本文將封裝一個音頻池組件,以期幫助大家簡化音頻工作流程。
一、音頻播放方式
首先,我們必須了解Cocos Creator中音頻播放的兩種方式,如下圖所示:

總結下就是,Cocos Creator提供兩種音頻播放方式,AudioEngine 與 AudioSource 都能播放音頻,它們的區(qū)別在于 AudioSource 是組件,可以添加到場景中,由編輯器設置。而 AudioEngine 是引擎提供的純 API,只能在腳本中進行調用。
共同點:本質都是處理 AudioClip音頻資源,需要在Cocos Creator編輯器中掛載組件。
二、組件化工作流程
1.AudioSource組件使用步驟:
首先我們來回顧一下使用 AudioSource 的工作流程,隨后分析優(yōu)缺點:
在【層級管理器】上創(chuàng)建一個空節(jié)點,選中空節(jié)點,在【屬性檢查器】最下方點擊【添加組件】 -> 其他組件 -> AudioSource 來添加 AudioSource 組件。
將【資源管理器】中所需的音頻資源拖拽到 AudioSource 組件的 Clip 中,如下所示:

通過腳本控制 AudioSource 組件:

選擇相對應的節(jié)點,添加腳本組件。然后將帶有 AudioSource 組件的節(jié)點拖拽到腳本組件中的 Audio Source 上,如下所示:

引用 audioSource 以控制音效。
2.AudioSource組件優(yōu)缺點
【1】優(yōu)點:提供面向設計和開發(fā)的兩種工作流,是一種簡單順暢的分工合作方式。記得嗎?Cocos Creator 是以內容創(chuàng)作為核心的游戲開發(fā)工具,在 Cocos2d-x 基礎上實現了徹底腳本化、組件化和數據驅動等特點。
【2】缺點:重復工作:每個音頻都需要重復上述多個操作步驟。維護困難:若音頻掛載在不同的節(jié)點中,不利于定位與維護。
【3】特點:掛載在節(jié)點上的 AndioSource 可以跟隨節(jié)點的生命周期。優(yōu)點:節(jié)點銷毀時,掛載的 AndioSource 可以跟隨銷毀,無需額外調用方法。缺點:節(jié)點頻繁創(chuàng)建與銷毀時,AndioSource 也跟著頻繁加載銷毀。
三、工具化工作流程
清楚組件化工作流程的優(yōu)缺點后,我們嘗試工具化工作流程,工具代碼如下:
分為兩個階段:
*【1】預加載preloadAllAudio?:遍歷枚舉 AUDIO_ENUM,依次加載音頻資源 AudioClip,封裝為 AudioSource 后放入 _audios ,后者其實就是一個簡單的空對象?!?】播放或停止 control:根據枚舉字符串,從_audios 中獲取 AudioSource,調用 play 或 stop 。
利用這個工具類,工作流程變?yōu)椋?/h1>
【1】預加載:在應用初始化時調用 preloadAllAudio(只需要一次);
【2】將音頻放置到資源管理器對應的目錄;
【3】在枚舉 AUDIO_ENUM 中添加音頻文件名,如下所示:
【4】引用工具類以控制音效缺點:設計與開發(fā)工作流未分離;優(yōu)點:減少重復工作,增強可維護性。
四、權衡
馬克思主義告訴我們,凡事都有兩面性,其內涵在軟件科學的解釋就是:沒有銀彈(No Silver Bullet)。對于組件化和工具化,哪種更理想,實際上并沒有一個定論。
對于高度內容定制化的功能模塊,可以使用組件化工作流程,分離內容定制工作。
對于需求相對固定的功能模塊,可以使用工具化工作流程,簡化工作。
更多教學視頻及源碼素材:
https://www.bycwedu.com/promotion_channels/829468798