欢迎光临散文网 会员登陆 & 注册

一文教你Cocos Creator如何实现音频池工具的封装

2022-03-14 19:33 作者:BYCW丶幻彩  | 我要投稿

引言

关键词:音效管理、音频池、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

一文教你Cocos Creator如何实现音频池工具的封装的评论 (共 条)

分享到微博请遵守国家法律