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

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

我在场景中创build了一个精灵,并使用场景编辑器添加了Actions来移动它。 当我点击编辑器上的animationbutton时,动作就可以正常工作。 我使用场景编辑器中的SKReferenceNode对象将此场景的引用添加到主场景中,并且在编辑器中按照预期在主场景中出现该精灵。 然而,当我构build并运行应用程序时,精灵出现,但没有任何“动作”运行。 我已经在Xcode 9.2testing版上试过了,并得到相同的结果。 如果我直接从主视图控制器加载精灵场景,所有的动作都按预期执行,所以这似乎是引用节点的问题。 我还发现,如果我在主场景swift类中重写了didMove(to :),并在其中放置了一个断点,那么只要在断点处点击继续,所有的Actions就会按照预期在所引用的精灵上播放。 如果我禁用断点,则不会在参考的精灵上播放动作。 (所以我的解决方法是简单地使用断点,并点击继续button)

另一个有趣的观察 我打开了一个使用老版本的Xcode创build的示例项目,引用的精灵执行了他们的Actions罚款。 我复制这个较旧的SKS文件到我的项目和行动工作正常…直到我编辑SKS文件(添加另一个行动),然后他们再也没有工作。

我刚才问了一个类似的问题: XCode 9:SKEditorReference不允许animation?

我能够得到这个工作的唯一方法是将isPaused放在我试图animation的精灵节点上(在一个ref节点中 – 我创build了一个完整的sks场景/文件并将其拖放到我的主场景中)。

我在顶层尝试了isPaused = false,主场景didMove查看没有效果,然后将isPaused = false添加到主参考节点,没有任何效果。 它只有当我添加isPaused = false我试图animation的实际精灵。 我从主&ref节点中删除了isPaused = false,并且只要它仍然在精灵节点上(在ref节点内),我正在尝试animation:成功。

底线似乎是在参考节点内的任何精灵需要isPaused = false。