第 7 课

目录

Streaming(流播放)

另一个减小内存占用的方法是不要将整个音频文件一次性加载到游戏系统的 RAM 中来。为此,可通过流播放形式来直接从存储介质(如光盘或硬盘)播放音频。这个选项给了游戏开发者又一条管理内存的策略。到底用不用 Streaming 取决于每个游戏的技术需要,但 Streaming 对长达好几分钟的大型音频文件比如音乐特别有效。

Streaming 的缺点是从游戏引擎发起播放声音的调用时算起,到声音切实开始播放之前可能会有个空隙,这是因为要花费一定的时间才能定位到这个文件并启动流播放。这种方式不适合 Ice Gem(冰晶宝石)投掷声,但对持续播放的环境声或音乐来说还是不错的。流播放还有一个缺点,就是在一次性读取的数据总量上存在一定的技术限制,并且游戏的其他方面(如视频)可能会跟音频争用同一播放流的带宽。

对《Cube》来说,Streaming 可以帮助解决 DCP_the_core 这个 SoundBank 的内存预算超支的问题。你可能还记得 Cube Main Theme 这首音乐是由 DCP_Music 这个事件触发的,这个事件是在本课中早些时候加到 DCP_the_core 这个 SoundBank 中的,而这个 SoundBank 目前超出了内存预算。对音乐进行流播放可有效降低内存用量,而且这种播放方式不会影响声音的品质。

  1. 切换到 Designer(设计师)布局,然后选中 Cube Main Theme 对象。同时,确保选中 Property Editor(属性编辑器)的 General Settings(常规设置)选项卡。

  2. 在 Property Editor(属性编辑器)中,选中 Stream(流播放)复选框。

    其它 Streaming 属性现在出现了,但此处不必改变这些参数,除非你想要尽可能缩短启动流的时延(latency)。

    为了查看经过弃用对象和采用 Streaming 后节省了多少内存,你需要到 SoundBank 界面布局中去生成 SoundBanks。

  3. 切换到 SoundBank(音频包)布局,然后单击 Generate All(全部生成)。

    我们可以看到,在对音乐进行流播放之后,其内存用量大大降低了。"DCP_the_core" SoundBank 的大小之前有 29,000,000 字节,现在只有 6,000,000 字节预算的一半还不到。


此页面对您是否有帮助?