【发布时间】:2013-08-26 08:59:30
【问题描述】:
我有一个使用 Unity 游戏引擎和自写库来访问 Apple 的 Core Motion 框架的 iPhone 游戏。性能在 iPhone 5 上非常出色,过去在 iPhone 4 上性能还不错。
今天在 iPhone 4 (iOS 6.1.3) 上运行我的应用程序会在一段时间后出现帧速率持续下降(5-10 分钟后明显)。大约 20 到 30 分钟后,游戏几乎无法玩,并且似乎以慢动作运行。
奇怪的是:特别是当设备静止在桌子上时,效果会发生。 当我移动设备时,帧率会明显上升,但在没有移动时会再次下降。我发现不是用 C#(Unity 游戏引擎)编写的游戏代码,而是 Obj-C 部分用于处理 Core Motion 的运动控制。
我认为问题开始于我从 iOS 5.1.x 更新到 iOS 6.1.3 的时间,但我不确定。很难确定问题开始的确切时间,因为我在精美的 iPhone 5 上进行了所有更长的测试,而在 iPhone 4 上进行了快速测试(好的,吸取了教训 ;-)。
我使用“旧式”拉取方法来获取 CMDeviceMotion 实例,即 startDeviceMotionUpdates 没有块处理程序。拉取代码在单独的线程中运行,结果证明这是最高效的方式 - 嗯,过去。
Unity 内置的 iOS 分析器(控制台)并没有显示出显着的内存消耗,但我认为本机代码插件在统计中没有考虑在内。据我所知,Xcode 分析器也没有显示任何泄漏。只是大量的内存分配和释放,这让我有点惊讶(我认为在轮询时在内部回收 CMDeviceMotion 实例可能会更快,但谁在乎)。
问题:这个星座在 iOS 6 上是否存在任何已知问题?我的意思是,拉动,在单独的线程中运行,60 Hz,结合 Unity 游戏引擎 + Open GL ES 2,...
【问题讨论】:
标签: iphone ios unity3d core-motion