为什么要使用媒体助手 Media Utils?
如果你遇到这些问题,那媒体助手可以帮到你:
- 【懒加载】作品中使用背景音乐,但加载太多背景音乐导致作品容量太大,加载缓慢,卡 99%
- 【懒加载】作品中大量 CV,希望根据玩家游戏进度加载音频内容
- 【视频播放】做 AVG 游戏, 背景希望是一个循环播放的视频,导入成帧动画后文件尺寸激增
- 【视频播放】游戏前 OP 想加视频
- 【视频播放】关卡完成后想播放效果炸裂的全屏特效
- 【音频特效】背景音乐循环播放,但当菜单出来的时候,希望音乐在不间断的情况下加特效
- 【音频特效】游戏中想让玩家在受伤后音效发生变化,有一种在浴室里听到隔壁邻居放歌的感觉
使用媒体助手的最佳实践案例
模块
Media Utils 主要分为 5 个模块:
资源相关
加载音频视频
载入媒体库中的资源到项目中,命名为 【key】。 其中【key】 是一个唯一的编号。 以下情况媒体库会这样处理:
加载音视频事件
当资源被成功加载后,事件会被触发,其中参数 name 为在加载时对应的命名。
资源释放及状态查询
为了节约内存使用, 当资源不再使用时,请用上面的积木移出资源。
可以得到载入了的音频或视频。以 JSON Array 的形式返回,例如:
["bgm","video2","audio3"]
视频相关
判断是否载入的最好办法是使用事件驱动,也就是上面部分提到的事件。 如果特殊情况,不能使用事件驱动,可以下面语句判断资源是否载入:
当视频资源被载入后,就能用视频相关的代码来控制视频的渲染和播放了。
其中最核心的是视频播放相关的功能:
视频播放
在视频被载入后,播放前,需要告诉引擎如何绘制视频。 主要有三个部分的设置: 1. 绘制到哪个角色的上面还是下面; 2. 绘制到相对这个角色的 x, y 偏移量; 3. 绘制的视频大小。 注意以下情况的处理:
设置好绘制位置后,就能播放视频了。 这句代码可以设置视频从什么时间点播放,以及播放完毕后做什么。 播放完毕后可以选择是【停止】 或者【循环】。
以及【暂停】【继续】播放视频,或者【移出】。 移出会销毁这个视频资源,不再占用内存。
在视频的全周期可以收到视频的各种事件,包括:【时长改变】、【载入进度】变化、播放时【当前时间改变】、【结束】播放、开始【播放】、【暂停】播放以及播放【错误】。
当然,当视频载入后,你也可以获得视频的各种信息,包括当前的【音量(dB)】、【当前进度时间】、视频的总【时长】、视频原始的【宽】和【高】
当然,你也可以随时设置视频的音量。
音乐相关
和视频一样,最佳实践是通过事件来判断某个音频是否已经载入成功。 当然,你也可以用下面的代码来做判断:
当音频载入后,就能对音频进入播放的操作了。 和视频不一样的是,音频不需要设置依附于哪个角色。
使用上面语句就能播放名为 loop 的音频,并且是从 0 秒开始播放。 播放完毕后可以选择是【循环】播放,还是【停止】播放。
当然,过程中,你也可以随时【暂停】播放、【继续】播放 或者【移出】资源(也就是销毁这个音频资源)
你可以像视频一样获得音频的【音量】、【当前时间】和【音频时长】
当然,你也可以改变音频的音量。
和一般的调整音量不一样的是,媒体助手为像 DJ 一样按你的指令在一定的时间内把音量做调整。
这个十分有用。 这会让你的游戏音量变化十分的自然,不会突然变大或变小。
当然,音乐播放中音量也是使用的 dB 为单位。 不知道为什么的话,请阅读
最后,和视频一样,我们推荐的编程模式也是事件驱动式的。 也就是使用下面的事件来驱动程序的功能:
其中事件包括音频【播放】时、【播放完毕】时、【暂停】时和重新【继续播放】时。
音频特效相关
当已经能播放音频和视频后,接下来,在 Gandi 中,你是可以把音频视频的轨道加上各种音乐特效的。 所有的音乐特效可以加在:
- 【Scratch】 原生通道上,也就是所有在 Scratch 原生【声音】里播放的声音都会到这个通道上
- 【媒体库】通道上, 也就是用媒体助手加载的音频和视频会到这个通道
- 【主通道】上,也就是上面的 【Scratch】通道和【媒体库】通道加了特效后,都会接入【主通道】
目前开放的特效为:
以上所有特效对应的积木如下:
其中,【混响】和【延迟】有多出 “打开效果到【xx】”这个部分。 这个部分在音频里指的就是 干湿度(Dry/Wet),0 为干, 1 为湿。 也就是对应效率器的效果占比。 0 为占比 0%,1 为占比 100%
关于什么是 dB,为什么要使用 dB,请见文章
其他实验功能
其他实验功能会在实验完成后成为正式的功能。
目前在实验的功能是合成器。 提供了 4 种 8 bit 音乐的常见合成器。【脉冲波】【方波】【三角波】和白【噪音】。 设置播放音符如果是单音用 [C/D/E/F/G/A/B][1/2/3/4/5/6/7/8] 进行组合。 例如 A 是la,4 是第四阶,中音, A4 在国际标准中频率 = 440 Hz。按照十二平均律,对应的 A5 为 880 Hz。 以此类推。如果要播放 440 Hz 的方波 1 秒,可以这样设置:
如果想播放 Amin 和弦,也就是 A C E 三个音,可以这样设置:
如果最后这部分看不懂,没关系,正常的。 学习了音乐和乐理知识后自然就懂了。
相关文章
暂无,后续社区中有好的音频相关的文章会在这里补充
历史更新 和 Roadmap
coming soon…