当内存超过40MB时,基于Unity的应用程序在iPad 1上崩溃

当内存超过40MB时,基于Unity的应用程序在iPad 1上崩溃,ipad,memory,crash,unity3d,Ipad,Memory,Crash,Unity3d,我知道这可能是相当具体的统一,但我在这里问它的原因是因为这是一个关于iPad和内存使用的一般性问题 我们有一个Unity3D游戏项目(不是我创建的,但我正试图帮助解决它崩溃的原因)。它包含任意时间加载的大约8个纹理,大小均为512x512。在游戏中,屏幕上的多边形可能不超过10000个 当我们在iPad2上的仪器上运行它时,它的峰值约为60MB,这似乎在该机器的内存能力范围内。然而,当我们尝试在iPad1上运行它时,即使在重新启动以清除内存之后,仪器显示它在崩溃之前可以达到大约40MB的负载 i

我知道这可能是相当具体的统一,但我在这里问它的原因是因为这是一个关于iPad和内存使用的一般性问题

我们有一个Unity3D游戏项目(不是我创建的,但我正试图帮助解决它崩溃的原因)。它包含任意时间加载的大约8个纹理,大小均为512x512。在游戏中,屏幕上的多边形可能不超过10000个

当我们在iPad2上的仪器上运行它时,它的峰值约为60MB,这似乎在该机器的内存能力范围内。然而,当我们尝试在iPad1上运行它时,即使在重新启动以清除内存之后,仪器显示它在崩溃之前可以达到大约40MB的负载

iPad1有什么理由不能处理超过40MB的数据?我知道iPad1只有256MB,而iPad2只有512MB,但这肯定还是在设备的功能范围内吗


编辑:iPad1运行的是iOS 4.2.1,iPad2运行的是iOS 5.1。

我们不知道iPad1上安装的iOS版本,它可以改变操作系统使用的基本内存


根据我的经验,在发出内存警告之前,40MB的限制与我在只有256MB内存的苹果设备上看到的30-50MB的范围是一致的。

你不需要放弃iPad1支持就可以让你的应用程序正常工作。避免此问题的方法是解压缩纹理,然后将每个纹理写入文件。然后,内存映射每个文件,并使用内存映射地址而不是普通内存地址。iOS设备可以通过这种方式从一个文件映射大约700兆的数据,您可以通过普通的opengl方式将内存发送到图形卡。

这很有用,谢谢。iPad1运行的是iOS 4.2.1。令我惊讶的是,与很多全套iOS游戏相比,我们在自己的游戏中做的并不多。我们曾想过使用纹理图集,但这将是一个很大的工作。你认为值得尝试吗?对我来说,你可以考虑不支持iPad 1:与iPad 2和新iPad相比,它的CPU/GPU非常糟糕!但你不能这么做,是吗?我听说除非您检查特定硬件,否则无法进行限制,例如前向摄像头。。。除非我们真的使用前置摄像头,否则苹果可能不会允许这样做。你可以增加你想要的限制,并使用不同的硬件要求来排除特定的设备。你不需要实际使用相机来要求它。那么仅仅使用UIRequiredDeviceCapabilities真的可以吗?我在这里的其他地方读到,将其用于您不使用的硬件将导致您的应用被拒绝(现在找不到链接)。这不是真的吗?