TouchesMoved()不一致更新

时间:2016-11-28 05:27:09

标签: ios swift sprite-kit

您好我正在使用Spritekit和Swift,我正在根据用户手指在屏幕上的移动进行一些相机移动和其他操作。

在摘要中,我的问题是TouchesMoved没有一致地更新,并且改变了它们之间的一致性。即使没有TouchesMoved,所有其他方法(如Update())也会一致地更新。

它在一半的时间里工作得非常顺畅,但有时会因为TouchesMoved方法直接影响的任何事情而开始滞后。以下是我的一些代码:

 override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        for touch in touches{
            var positionInScene = touch.location(in: self.view)
            //Some arithmetic for calculating length (nothing complex or long)
            camera.setScale(length)
        }
 }

“滞后”仅在触摸之间出现或落后。

它通常也会爆发。如果它会滞后,通常会在10个或更多触摸的组合中进行,反之亦然。有时候第一次点击游戏会出现滞后现象,有时需要50才能让游戏显示出来。

请注意,即使触摸运动滞后,游戏中也没有任何其他东西滞后(更不用说其他一切都比触摸运动复杂得多,通常它只是简单地放大和缩小相机)。 游戏使用30%的CPU,50 MB的内存和非常高的用电量。

更新:我在调用TouchesMoved方法和Update方法之间经过了一段时间。无论如何,Update方法将以.016秒的间隔运行。 TouchesMoved做同样的事情,但是当我注意到滞后时,因为这个间隔由于某种原因被加倍了。为什么TouchesMoved正在接收更新延迟,但我的其他更复杂的方法不是?

这是另一篇似乎有类似问题的帖子: Choppy dragging in SpriteKit game

请为上帝的爱拯救我从这个深渊!我已经打了一个月这个问题了,这是我最后的希望,然后再去掉它。

谢谢!

0 个答案:

没有答案