小编use*_*310的帖子

touchesMoved以不规则的间隔调用

我正在制作一款适用于iOS的游戏,您可以在屏幕上拖动大对象.当我在实际的iPad/iPhone上运行游戏一段时间(连续在屏幕上以圆圈拖动物体)时,每隔5分钟左右,被拖动的物体就会大约10-30秒.然后,它回到移动丝般光滑.

在视觉上,看起来游戏的帧速率在一段时间内降至15 fps,但事实上它一直以坚如磐石的60 fps运行.然而,我注意到唯一不能顺利移动的是被拖动的物体,而游戏的其余部分都运行得非常顺畅.

这让我相信口吃与iOS中的触摸输入有关.所以我开始查看touchesMoved,并且看到它通常每16毫秒调用一次(因此触摸输入以60 fps运行).到现在为止还挺好.

然后我注意到当对象开始出现口吃时,touchesMoved开始以奇怪的时间间隔被调用,在8毫秒到50毫秒之间波动.

因此,当触摸屏处于这种奇怪的状态时,有时touchesMoved将在前一次调用后的8毫秒内被调用,有时它将在前一次调用后50毫秒被调用.当然,这使得拖动的对象看起来都很不稳定,因为它的位置是以不规则的间隔更新的.

你有什么想法会导致touchesMoved停止被定期调用,就像通常那样吗?


奖金:

- 无论何时我倾斜屏幕以强制屏幕方向改变,大约70%的时间触摸屏进入上述状态,其中touchesMoved开始被不规则地调用.然后在10-20秒后它恢复正常,一切看起来都很平稳.

- 我已经在两台iPad和两台iPhone上试用了iOS 6和7,这个问题出现在所有这些设备上.

- OpenGLES视图用于显示图形.它使用同步到显示刷新率CADisplayLink.

- 我用来测试这个的Xcode项目是由unity3d游戏开发工具生成的,但是我发现了几个出现同样问题的非统一游戏.这似乎是一个系统范围的问题.注意我正在测量objective-c中使用的时间CFAbsoluteTimeGetCurrent,完全在统一之外.

cocoa-touch timing unity-game-engine touchesmoved ios

5
推荐指数
1
解决办法
1440
查看次数