【问题标题】:Unity-based application crashes on iPad 1 when memory exceeds 40MB当内存超过 40MB 时,基于 Unity 的应用程序在 iPad 1 上崩溃
【发布时间】:2012-05-08 03:38:47
【问题描述】:

我知道这可能是 Unity 特有的,但我在这里问它的原因是因为这是一个关于 iPad 和内存使用的一般性问题......

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

当我们在 iPad 2 上通过 Instruments 运行它时,它的峰值约为 60 MB,这似乎完全在该机器的内存容量范围内。然而,当我们尝试在 iPad 1 上运行它时,即使在重新启动以清除内存后,Instruments 显示它在崩溃之前也有大约 40 MB 的加载量。

iPad 1 不能处理超过 40 MB 有什么原因吗?我知道 iPad 1 只有 256 MB 与 iPad 2 的 512 MB 相比,但这肯定在设备的能力范围内吗?

编辑:iPad 1 运行 iOS 4.2.1,iPad 2 运行 iOS 5.1。

【问题讨论】:

    标签: ipad memory crash unity3d


    【解决方案1】:

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

    根据我的经验,在调用内存警告之前,40MB 的限制与我过去在只有 256MB RAM 的 Apple 设备上看到的 30-50MB 范围一致。

    【讨论】:

    • 知道这一点很有用,谢谢。 iPad 1 运行 iOS 4.2.1。令我惊讶的是,与许多完整的 iOS 游戏相比,我们在我们的游戏中做得并不多。我们已经考虑过使用纹理图集,但这将是很多工作。你觉得值得一试吗?
    • 对于我来说你可以考虑不支持iPad 1:与iPad 2和新iPad相比,它的CPU/GPU非常糟糕!
    • 但你不能那样做,对吗?我听说除非您检查特定硬件,否则无法进行限制,例如前置摄像头......然后Apple可能不会允许,除非我们实际使用前置摄像头。
    • 您可以添加所需的限制并使用不同的硬件要求来排除特定设备。您不需要实际使用相机来要求它。
    • 那真的可以只使用 UIRequiredDeviceCapabilities 吗?我在这里的其他地方读到,将它用于您不使用的硬件会导致您的应用程序被拒绝(现在找不到链接)。这不是真的吗?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多