目录
总的来说,经常监看内存用量是个不错的做法。不过,很多游戏制作也会为各个部门预留特定的 CPU 和内存预算。比如,音频部门可能获得 100 MB 的声音引擎内存预算。在这种情况下,就要设法确保不会超出预先设定的预算。不过,因为游戏是互动的,有时内存可能会超出预算。比方说,您的游戏可能会使用程序生成的素材。这样的话游戏设计不可避免地会加载过多内容。为了确保内存用量不会超出团队的内存预算,您可以设定一个限值。
在实际的游戏制作中,刚开始的时候最好使用 Playback Limit(播放限值)等功能来控制声景。这样也方便您决定要为哪些声音留出更大的回旋余地。实在没办法的话,可以使用 Memory Allocation Size Limit。 |
-
在 WAG Unity 工程中,依次转到 Edit > Project Settings > Wwise Initialization,然后向下滚动到 Memory Allocation Size Limit。Memory Allocation Size Limit 可限制 Wwise 所能使用的内存总量。跟其他游戏引擎不一样,Wwise 不会在超出内存限值时发生崩溃。相反,Profiler 中会显示相应的错误,但仍可访问已经加载到内存中的声音。接下来,我们设定一个限值,看看达到限值时会发生什么。
-
在 Memory Allocation Size Limit 中,将限值设为 35 000 000。
该属性以字节为单位。所以,35 000 000 就是 35 000 KB 或 35 MB。
-
连接到远程会话(Profile Only 模式下),然后在 Unity 中按下 Play 按钮。
这时会在 Wwise 中的 Memory 选项卡类别上面显示 Memory Allocation Size Limit。为什么限值显示的是 33.4 MB 而不是 Wwise Initialization Settings 中指定的 35 MB?这是因为 Wwise 中显示的内存采用的是不同的单位(MiB,只不过用户界面中显示为 MB)。所以,要想在 Wwise 中设置 35 MB 的限值,需要先将其转换为 MiB,然后再在 Wwise Initialization Settings 中设置。您可以使用这样一个公式:DesiredLimit * 1024 * 1024 = ActualLimitNumber。因此,要想在 Wwise 中设置 35 MB 的限值,需要将 Memory Allocation Size Limit 设为 36 700 160(也就是 35 * 1024 * 1024)。
-
将 Memory Allocation Size Limit 设为 36 700 160。
-
打开菜单并传送到 Dungeon。
-
退出游戏模式,并打开 Wwise Profiler。
这时应会看到多项错误。比如:
Memory allocation failed: ______ bytes in category '______' - media?: no - device?: no - currently allocated ______ / 35000000 bytes
在传送到地牢时,会超出 Memory Allocation Size Limit。这时 Profiler 会告知您是由哪个内存类别导致的。另外,我们可以看到游戏并没有出现卡顿或发生崩溃。声景当中可能缺少一些无法加载的内容,但会继续播放已经加载到内存中的声音。游戏会持续运行,内存用量也会保持在安全范围内。