我有一个iPhone游戏使用统一游戏引擎和自写库访问苹果的核心运动框架。iPhone 5的性能很好,过去iPhone 4的性能也很好。
今天在iPhone 4上运行我的应用程序(iOS 6.1.3) --一段时间后,帧率会持续下降( 5-10分钟后会很明显)。大约20-30分钟后,这场比赛几乎是不可玩的,似乎以慢动作运行。
奇怪的是:这种效果会发生,尤其是当设备躺在桌子上的时候。当我移动设备时,帧速率明显上升,但在没有移动时再次下降。我发现用C# (统一游戏引擎)编写的游戏代码并不是它的罪魁祸首,而是使用Core处理运动控制的Obj部分。
我认为这个问题是在我从iOS 5.1.x升级到iOS 6.1.3时开始的,但我不确定。在问题开始的时候,很难准确确定问题发生的时间,因为我在花哨的iPhone 5上做了更长的测试,在iPhone 4上只做了快速测试(好,吸取了教训;-)。
我使用‘旧式’拉方法来获取CMDeviceMotion实例,即没有块处理程序的startDeviceMotionUpdates。牵拉代码在一个单独的线程中运行,这是最完美的方式--嗯,在过去。
统一的内置iOS分析器(console)并没有显示出大量的内存消耗,但我认为在统计中不考虑本地代码插件。据我所知,Xcode分析器也没有显示任何泄漏。只是大量的内存分配和释放,这让我有点吃惊(我认为在内部回收CMDeviceMotion实例可能会更快,但谁在乎)。
问题:iOS 6上这个星座有什么已知的问题吗?我的意思是,拉,运行在一个单独的线程,60赫兹,与联合游戏引擎+开放GL ES 2,.
发布于 2013-08-26 08:59:30
最后我找到了罪魁祸首:deviceMotionUpdateInterval
更准确地说,更改间隔(通常是)。
根据在iOS事件处理指南中选择运动事件更新间隔节的说法,更大的间隔可以提高电池寿命。因此,我实现了一些逻辑,以降低频率至2Hz时,游戏不活跃,即游戏结束,暂停,主菜单,.当恢复游戏播放时,频率再次设置为60 Hz。
在注释掉更改频率的代码后,问题消失了。所以我决定不再用这种方式来节省电池消耗。
https://stackoverflow.com/questions/18440341
复制相似问题