首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode 9.1 (和9.2) -引用的精灵不执行场景编辑器中添加的动作

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

Stack Overflow用户
提问于 2017-12-03 14:19:21
回答 4查看 854关注 0票数 9

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

我在场景中创建了一个精灵,并添加了使用场景编辑器移动它的动作。当我单击编辑器上的动画按钮时,动作可以正常播放。我使用场景编辑器中的SKReferenceNode对象将对此场景的引用添加到主场景中,精灵将如编辑器中预期的那样出现在主场景中。然而,当我构建并运行应用程序时,精灵出现了,但没有运行任何操作。我已经在Xcode9.2测试版上尝试过了,也得到了同样的结果。如果我直接从主视图控制器加载sprite场景,所有操作都会按预期执行,因此这似乎是引用节点的问题。我还发现,如果我在主场景swift类中重写didMove(to:),并在其中放置一个断点,然后在它命中断点时单击continue,则所有操作都会按预期在引用的sprites上播放。如果我禁用断点,引用的精灵上不会播放任何操作。(所以我的解决方法就是简单地使用断点,然后点击continue按钮)

另一个有趣的观察。我打开了一个用旧版本的Xcode创建的示例项目,并且引用的sprites可以很好地执行它们的操作。我将这个较旧的SKS文件复制到我的项目中,操作fine...until我编辑了SKS文件(添加了另一个操作),然后它们再也不起作用了。

EN

回答 4

Stack Overflow用户

发布于 2018-04-27 22:32:56

我也有同样的问题,它快把我逼疯了。我尝试在场景和单个精灵上设置.isPaused。除了插入断点方法之外,什么都不起作用。这不是一个解决方案。

我发现,如果我将is paused设置为true和false (这是我想要的值),那么它对所有的精灵都有效。

代码语言:javascript
复制
 override func didMove(to view: SKView) {
    self.isPaused = true
    self.isPaused = false
}

这是场景编辑器中的一个相当恼人的bug,应该被修复。

票数 11
EN

Stack Overflow用户

发布于 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。

票数 1
EN

Stack Overflow用户

发布于 2018-07-03 13:04:12

嗨,我也有同样的问题。下面是我的解决方案:

代码语言:javascript
复制
override func didMove(to view: SKView) {
    sleep(1)
}

然而,这不是一个好方法。我希望我能暂时帮助你。如果你喜欢这个问题或找到更好的解决方案,请回复我,谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47615847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档