将音频剪辑保存在内存中

Keeping audio clips in memory

我正在制作游戏,我注意到将所有音频文件保存在内存中通常不是真正的内存效率,因为更长(因此更大)的音频文件会占用大量内存。我想知道游戏应该以多大的尺寸决定流式传输音频文件,而不是将其存储在内存中?

作为一种好的做法,您应该将所有音频(和纹理)文件保存在 RAM 中。从 ram 读取音频文件比从硬盘读取音频文件快得多。如果您的游戏设计为加载音频文件并在需要音频时播放它,然后在您的游戏播放完音频后销毁它,这将使您的游戏滞后。

最好的方法是不要加载不需要的音频文件。
例如,您的游戏有 5 个阶段。在第一阶段,music_1.mp3 不是必需的,因此您不应加载它。第一阶段完成后,从ram中删除音频文件(仅第一阶段的音频,不会在其他阶段使用)。

你应该不需要关心这个。相反,请尝试软引用您的资源。

http://docs.oracle.com/javase/7/docs/api/java/lang/ref/SoftReference.html

..at which size the game should decide to stream the audio file, rather than storing it in memory?

我会在 OutOfMemoryError 完成。在此之前的任何事情都是过早的优化。