Gio*_*lla 6 cocoa-touch ios sprite-kit swift
我正在开发一个简单的SpriteKit游戏(在Swift中),它具有基本物理功能,包括拖放一些带有触摸的SKSpriteNodes.该实现使用touchesBegan,touchesMoved等,并更新被触摸的精灵的位置.一切都按预期工作,但是:
好:游戏总是以60fps的速度运行,cpu使用率约为50%,gpu为6%
坏:拖动的精灵有时非常不稳定(看起来像10fps或类似).请注意,这意味着即使在此问题期间,所有其他精灵仍然以60fps的速度生效.
这是因为touchesMoved有时会比平常每秒60次更频繁地被调用.通常我可以平滑地拖放一些精灵,然后它开始变得不稳定并且永远不会恢复正常.
这是我的触摸处理的简化版本:
override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!) {
if let allTouches = touches.allObjects as? UITouch[] {
for touch in allTouches {
let draggedThing = findDraggedThingForTouch(touch)
draggedThing.dragJoint!.bodyB.node.position = touch.locationInNode(self)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过使用手势识别器代替触摸事件,改变精灵的位置,而不是通过弹簧关节拖动它,并使拖动的东西不动态.所有版本都表现出相同的错误,即一段时间后,touchesMoved或手势识别器动作开始每秒发射5次而不是60次.
什么可能导致这个?
| 归档时间: |
|
| 查看次数: |
765 次 |
| 最近记录: |