首页 > 解决方案 > Unity 应用在 IOS 上比在 Android 上使用更多的内存

问题描述

我已经为 android 和 IOS 构建了一个统一的应用程序,并且 android 已经运行了好几个月了。但是 IOS 设备因 ram 溢出错误(Iphone 7 上的 EXC_RESOURCE RESOURCE_TYPE_MEMORY (limit=1450 MB, used=0x0))而崩溃。

我已经减少了所有的纹理大小(有些像 8k,所以这是一个显着的减少),我还压缩了所有的音频文件。这让它在本地工作,但我被应用商店拒绝,因为他们的测试设备(Ipad)崩溃了。

我在使用 Android 时从未遇到过任何问题,即使在具有未压缩纹理和音频的旧设备上也是如此,那么为什么这些问题会出现在内存使用量少得多的 IOS 设备上呢?

标签: androidiosxcodeunity3dmemory

解决方案


压缩在 Android 和 iOS 上的工作方式非常不同。

这是iOS的一个常见问题,我自己已经与它斗争了多年。

尝试以下操作:

  1. 为了使您的图像在苹果平台上被正确压缩,它们必须是 2 的幂。在 android 上,情况并非如此。

  2. 使用统一可寻址资产系统管理您的所有图像和音频文件,并在需要时将它们加载到内存中,而不是一直在内存中。

  3. 使用精灵图集

  4. 检查您的音频文件导入设置,这是一个常见的问题。

  5. 你提到有些图像曾经是 8k 的!这太疯狂了。在我看来,即使是 4K 或 1080 也是不必要的。尝试将每个图像的最大尺寸设置为非常小,然后慢慢增加,直到您对它的外观感到满意为止。我敢打赌,你能逃脱这么小,你会感到非常惊讶。

5 号是您最好的选择,也是非常重要的学习内容。

因此,了解第 2 点很重要。如果它看起来很复杂而且工作量太大,那就制作资源较少的游戏,因为内存管理在大型游戏中是不可避免的。


推荐阅读