一文教你Cocos Creator如何实现音频池工具的封装
引言
关键词:音效管理、音频池、Cocos Creator
多媒体内容(文本、音频、视频、图片、动画等)是一款应用能否在“同质化”严重的市场中脱颖而出的关键。
本文将封装一个音频池组件,以期帮助大家简化音频工作流程。
一、音频播放方式
首先,我们必须了解Cocos Creator中音频播放的两种方式,如下图所示:

总结下就是,Cocos Creator提供两种音频播放方式,AudioEngine 与 AudioSource 都能播放音频,它们的区别在于 AudioSource 是组件,可以添加到场景中,由编辑器设置。而 AudioEngine 是引擎提供的纯 API,只能在脚本中进行调用。
共同点:本质都是处理 AudioClip音频资源,需要在Cocos Creator编辑器中挂载组件。
二、组件化工作流程
1.AudioSource组件使用步骤:
首先我们来回顾一下使用 AudioSource 的工作流程,随后分析优缺点:
在【层级管理器】上创建一个空节点,选中空节点,在【属性检查器】最下方点击【添加组件】 -> 其他组件 -> AudioSource 来添加 AudioSource 组件。
将【资源管理器】中所需的音频资源拖拽到 AudioSource 组件的 Clip 中,如下所示:

通过脚本控制 AudioSource 组件:

选择相对应的节点,添加脚本组件。然后将带有 AudioSource 组件的节点拖拽到脚本组件中的 Audio Source 上,如下所示:

引用 audioSource 以控制音效。
2.AudioSource组件优缺点
【1】优点:提供面向设计和开发的两种工作流,是一种简单顺畅的分工合作方式。记得吗?Cocos Creator 是以内容创作为核心的游戏开发工具,在 Cocos2d-x 基础上实现了彻底脚本化、组件化和数据驱动等特点。
【2】缺点:重复工作:每个音频都需要重复上述多个操作步骤。维护困难:若音频挂载在不同的节点中,不利于定位与维护。
【3】特点:挂载在节点上的 AndioSource 可以跟随节点的生命周期。优点:节点销毁时,挂载的 AndioSource 可以跟随销毁,无需额外调用方法。缺点:节点频繁创建与销毁时,AndioSource 也跟着频繁加载销毁。
三、工具化工作流程
清楚组件化工作流程的优缺点后,我们尝试工具化工作流程,工具代码如下:
分为两个阶段:
*【1】预加载preloadAllAudio :遍历枚举 AUDIO_ENUM,依次加载音频资源 AudioClip,封装为 AudioSource 后放入 _audios ,后者其实就是一个简单的空对象。【2】播放或停止 control:根据枚举字符串,从_audios 中获取 AudioSource,调用 play 或 stop 。
利用这个工具类,工作流程变为:
【1】预加载:在应用初始化时调用 preloadAllAudio(只需要一次);
【2】将音频放置到资源管理器对应的目录;
【3】在枚举 AUDIO_ENUM 中添加音频文件名,如下所示:
【4】引用工具类以控制音效缺点:设计与开发工作流未分离;优点:减少重复工作,增强可维护性。
四、权衡
马克思主义告诉我们,凡事都有两面性,其内涵在软件科学的解释就是:没有银弹(No Silver Bullet)。对于组件化和工具化,哪种更理想,实际上并没有一个定论。
对于高度内容定制化的功能模块,可以使用组件化工作流程,分离内容定制工作。
对于需求相对固定的功能模块,可以使用工具化工作流程,简化工作。
更多教学视频及源码素材:
https://www.bycwedu.com/promotion_channels/829468798