在使用SpriteKit场景编辑器时,我遇到了一些意外的行为,不知道其他人是否也有同样的问题。
我在场景中创建了一个精灵,并添加了使用场景编辑器移动它的动作。当我单击编辑器上的动画按钮时,动作可以正常播放。我使用场景编辑器中的SKReferenceNode对象将对此场景的引用添加到主场景中,精灵将如编辑器中预期的那样出现在主场景中。然而,当我构建并运行应用程序时,精灵出现了,但没有运行任何操作。我已经在Xcode9.2测试版上尝试过了,也得到了同样的结果。如果我直接从主视图控制器加载sprite场景,所有操作都会按预期执行,因此这似乎是引用节点的问题。我还发现,如果我在主场景swift类中重写didMove(to:),并在其中放置一个断点,然后在它命中断点时单击continue,则所有操作都会按预期在引用的sprites上播放。如果我禁用断点,引用的精灵上不会播放任何操作。(所以我的解决方法就是简单地使用断点,然后点击continue按钮)
另一个有趣的观察。我打开了一个用旧版本的Xcode创建的示例项目,并且引用的sprites可以很好地执行它们的操作。我将这个较旧的SKS文件复制到我的项目中,操作fine...until我编辑了SKS文件(添加了另一个操作),然后它们再也不起作用了。
发布于 2018-04-27 22:32:56
我也有同样的问题,它快把我逼疯了。我尝试在场景和单个精灵上设置.isPaused。除了插入断点方法之外,什么都不起作用。这不是一个解决方案。
我发现,如果我将is paused设置为true和false (这是我想要的值),那么它对所有的精灵都有效。
override func didMove(to view: SKView) {
self.isPaused = true
self.isPaused = false
}这是场景编辑器中的一个相当恼人的bug,应该被修复。
发布于 2017-12-08 13:39:13
前几天我问了一个类似的问题:XCode 9: SKEditorReference doesn't allow animations?
我能让它工作的唯一方法是将isPaused放在我想要设置动画的精灵节点上(在ref节点内-我已经创建了整个sks场景/文件,并将其拖放到我的主场景中)。
我在顶层尝试了isPaused=false,主场景didMove查看没有效果,然后将isPaused=false添加到主引用节点,但没有效果。只有当我添加了isPaused=false时,它才能工作,这是我正在尝试动画的实际精灵。我从主& ref节点中删除了isPaused=false,只要它仍然在sprite节点上(在ref节点内),我就会尝试动画: success。
底线似乎是在引用节点内的任何精灵上都需要isPaused=false。
发布于 2018-07-03 13:04:12
嗨,我也有同样的问题。下面是我的解决方案:
override func didMove(to view: SKView) {
sleep(1)
}然而,这不是一个好方法。我希望我能暂时帮助你。如果你喜欢这个问题或找到更好的解决方案,请回复我,谢谢。
https://stackoverflow.com/questions/47615847
复制相似问题