大量使用 SKActions 是否存在明显的性能问题?
Are there any obvious performance issues of mass-using SKActions?
我有一个游戏,我在其中使用大量 SKActions 来提供所需的游戏逻辑。
例如,我不会将精灵的 zRotation
设置为一个值,而是使用 runAction(SKAction.rotateTo(/* angle here */, duration: 0.0)
。
我在 update
和 touchesMoved
中都这样打电话。因此这可能意味着数百个这样的调用,有时嵌套在其他动作组中。
相对于直接设置 zRotation
属性,我是否会产生大量开销?
您不应在更新方法中调用 SKAction,因为它每秒调用 60 次。相反,使用基于事件的触发器,它又调用 SKAction。 touchesMoved 就是一个很好的例子。您还可以使用完成方法块在当前操作完成后发出新的 SKAction 信号。
切勿将 SKActions 用于实时运动。相反,您应该直接设置 zRotation 或设置每帧必要的 angular 速度。在您的情况下,update 方法和 touchesMoved 方法都不适用于 SKActions,因为它们每秒可以 运行 30-60 次。
SKActions 确实会产生大量开销。这是 Apple 文档中的引述:
When You Shouldn’t Use Actions
Although actions are efficient, there
is a cost to creating and executing them. If you are making changes to
a node’s properties in every frame of animation and those changes need
to be recomputed in each frame, you are better off making the changes
to the node directly and not using actions to do so. For more
information on where you might do this in your game, see Advanced
Scene Processing.
你可以在我的回答中看到一个使用实时运动而不是 SKActions 的例子
我有一个游戏,我在其中使用大量 SKActions 来提供所需的游戏逻辑。
例如,我不会将精灵的 zRotation
设置为一个值,而是使用 runAction(SKAction.rotateTo(/* angle here */, duration: 0.0)
。
我在 update
和 touchesMoved
中都这样打电话。因此这可能意味着数百个这样的调用,有时嵌套在其他动作组中。
相对于直接设置 zRotation
属性,我是否会产生大量开销?
您不应在更新方法中调用 SKAction,因为它每秒调用 60 次。相反,使用基于事件的触发器,它又调用 SKAction。 touchesMoved 就是一个很好的例子。您还可以使用完成方法块在当前操作完成后发出新的 SKAction 信号。
切勿将 SKActions 用于实时运动。相反,您应该直接设置 zRotation 或设置每帧必要的 angular 速度。在您的情况下,update 方法和 touchesMoved 方法都不适用于 SKActions,因为它们每秒可以 运行 30-60 次。
SKActions 确实会产生大量开销。这是 Apple 文档中的引述:
When You Shouldn’t Use Actions
Although actions are efficient, there is a cost to creating and executing them. If you are making changes to a node’s properties in every frame of animation and those changes need to be recomputed in each frame, you are better off making the changes to the node directly and not using actions to do so. For more information on where you might do this in your game, see Advanced Scene Processing.
你可以在我的回答中看到一个使用实时运动而不是 SKActions 的例子