Xcode 9.1(和9.2) - 引用的精灵没有执行在场景编辑器中添加的动作

Rog*_*ger 8 xcode ios sprite-kit

我在使用SpriteKit场景编辑器时遇到了一些意想不到的行为,并想知道其他人是否有同样的问题.

我在场景中创建了一个精灵,并添加了动作以使用场景编辑器移动它.单击编辑器上的动画按钮时,动作可以正常运行.我使用场景编辑器中的SKReferenceNode对象将此场景的引用添加到主场景,并且精灵在编辑器中按预期显示在主场景中.然而,当我构建并运行应用程序时,精灵会出现但没有动作运行.我在Xcode 9.2 beta上试过这个并得到了相同的结果.如果我直接从主视图控制器加载精灵场景,所有的动作按预期执行,所以它似乎是引用节点的问题.我还发现,如果我在主场景swift类中覆盖didMove(to :),并在其中放置一个断点,那么只要在它到达断点时点击继续,所有Actions按照预期在引用的精灵上播放.如果我禁用断点,则没有操作在引用的精灵上播放.(所以我的解决方法是简单地使用断点,然后按下继续按钮)

另一个有趣的观察 我打开了一个使用旧版Xcode创建的示例项目,并且引用的sprite执行了他们的Action.我将这个旧的SKS文件复制到我的项目中并且Actions工作正常......直到我编辑了SKS文件(添加了另一个Action),然后它们再也没有工作过.

小智 9

我有同样的问题,这让我发疯.我尝试在场景和各个精灵上设置.isPaused.除了插入断点方法之外什么都没有用.那不是解决方案.

我发现如果我将暂停设置为true和false(这是我想要的值),那么它适用于所有精灵.

 override func didMove(to view: SKView) {
    self.isPaused = true
    self.isPaused = false
}
Run Code Online (Sandbox Code Playgroud)

这是场景编辑器中一个非常烦人的错误,应该修复.


小智 1

前几天我问了一个类似的问题: XCode 9: SKEditorReference does not allowed Animations?

我能够让它工作的唯一方法是将 isPaused 放在我试图设置动画的确切精灵节点上(在引用节点内 - 我创建了整个 sks 场景/文件并将其拖放到我的主场景中)。

我在顶层尝试了isPaused=false,主场景didMove查看没有效果,然后在主参考节点添加isPaused=false,没有效果。仅当我添加 isPaused=false 我试图设置动画的实际精灵时,它才起作用。我从主节点和引用节点中删除了 isPaused=false ,只要它仍在精灵节点上(在引用节点内),我就尝试设置动画:成功。

底线似乎是引用节点内的任何精灵都需要 isPaused=false 。