swift - 这两个 SpriteKit 函数有什么区别?

标签 swift sprite-kit

我不知道这两个函数有什么区别。

首先:

coin.run(SKAction.moveTo(y: -146.115, duration: 0))

第二个:

coin.position.y = -146.115

最佳答案

SKAction 直到下一帧才会被处理——紧接在 update 之后。如果您在 didEvaluateActions 之后调用 .run,您的位置将不会更新,并且您可能会因此遇到错误。

第二行代码将立即执行,无论您在 SK 循环中的位置如何。

例如,如果您正在使用物理学,并在 didBegin(contact) 中调用 .run(.move(,然后期望该 Sprite 已经移动通过didEnd(contact),那么你就会遇到问题。在那种情况下,你想手动调整.position而不是使用action。

enter image description here

其次,.run 命令的性能也较差,因为它需要初始化 SKAction 对象,这比手动调整位置慢 20-30%。

诚然,这种差异加起来并不多,但在复杂的场景中,这可能是在 16 毫秒 (60fps) 内完成所有操作之间的差异。

第三,正如其他人所提到的,有一个 forDuration 参数,它允许您在一段时间内为移动设置动画。例如,2 秒,或者您想要的任何时间。

关于swift - 这两个 SpriteKit 函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45219790/

相关文章:

ios - 如何解决泄漏?

ios - 使用 SKNode 的寻路不工作

ios - iPhone 模拟器显示错误图像

ios - 将 SpriteKit 物理模拟推进到稳定的静止状态

ios - 字符串编码 - Swift

swift - NSURL 失败初始化器 initWithString : does not return nil on empty String in Swift

ios - 如何向我的 UICollectionView 添加一个额外的静态单元格?

ios - 在 setNeedsLayout 上自动添加 StatusBar Padding

swift - 如何使用 UISearchBar 同时按 2 个参数进行搜索

ios - Sprite Kit 中的纹理图集不起作用