大量使用SKActions是否存在明显的性能问题?

时间:2015-05-11 06:50:18

标签: sprite-kit skaction

我有一个游戏,我使用很多SKActions来提供所需的游戏逻辑。

例如,我不是将精灵的zRotation设置为值,而是使用runAction(SKAction.rotateTo(/* angle here */, duration: 0.0)代替。

我在updatetouchesMoved中拨打了这样的电话。因此,这可能意味着数百个这样的调用,有时嵌套在一组其他操作中。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

SKActions会产生很大的开销。以下是Apple的文档引用:

  

何时不应使用行动

     

虽然行动是有效的,但那里   是创建和执行它们的成本。如果您要进行更改   每个动画帧中的节点属性以及所需的更改   要在每个帧中重新计算,最好进行更改   直接到节点而不是使用动作来执行此操作。更多   有关您在游戏中可能执行此操作的信息,请参阅高级   场景处理。

Source

您可以在我的回答here

中看到使用实时动作而不是SKActions的示例