Sprite kit 大规模使用SKActions是否存在明显的性能问题?

Sprite kit 大规模使用SKActions是否存在明显的性能问题?,sprite-kit,skaction,Sprite Kit,Skaction,我有一个游戏,我使用很多动作来传递所需的游戏逻辑 例如,我将使用runAction(SKAction.rotateTo(/*此处的角度*/,持续时间:0.0))代替将精灵的zRotation设置为值 我在update和touchesMoved中进行类似的调用。因此,这可能意味着数百个这样的调用,有时与其他操作组嵌套在一起 与直接设置zRotation属性相比,我是否会产生大量开销?您不应该在更新方法中调用SKAction,因为它每秒调用60次。相反,请使用基于事件的触发器,该触发器反过来调用SK

我有一个游戏,我使用很多动作来传递所需的游戏逻辑

例如,我将使用
runAction(SKAction.rotateTo(/*此处的角度*/,持续时间:0.0))代替将精灵的
zRotation设置为值

我在
update
touchesMoved
中进行类似的调用。因此,这可能意味着数百个这样的调用,有时与其他操作组嵌套在一起


与直接设置
zRotation
属性相比,我是否会产生大量开销?

您不应该在更新方法中调用SKAction,因为它每秒调用60次。相反,请使用基于事件的触发器,该触发器反过来调用SKAction。touchesMoved就是一个很好的例子。您还可以使用完成方法b当前操作完成后锁定新SKAction的信号。

切勿将SKActions用于实时运动。相反,您应该直接设置zRotation或设置每帧所需的角速度。在您的情况下,update方法和touchesMoved方法都不适合用于SKActions,因为它们可以每秒运行30-60次第二

SKActions确实会产生巨大的开销。以下是苹果文档中的一段引用:

当你不应该使用动作的时候 尽管行动是有效的,但仍存在一些问题 是创建和执行它们的成本。如果您正在对 每个动画帧中的节点属性以及这些更改需要 要在每个帧中重新计算,最好进行更改 直接添加到节点,而不使用操作。有关详细信息,请参阅 有关您可能在游戏中执行此操作的位置的信息,请参阅高级 场景处理


你可以在我的回答中看到一个使用实时运动而不是SKActions的例子

谢谢,这正是我想要的。