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

时间:2017-12-03 06:19:21

标签: ios xcode sprite-kit

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

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

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

4 个答案:

答案 0 :(得分:5)

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

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

 override func didMove(to view: SKView) {
    self.isPaused = true
    self.isPaused = false
}

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

答案 1 :(得分:1)

前几天我问了一个类似的问题: XCode 9: SKEditorReference doesn't allow animations?

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

我在顶级尝试了isPaused = false,主要场景无法查看到无效,然后将isPaused = false添加到主参考节点,无效。只有在我添加了isPaused = false时,我才会尝试设置动画的实际精灵。我从主&中删除了isPaused = false。 ref节点,只要它仍然在精灵节点上(在ref节点内)我试图动画:成功。

底线似乎是参考节点中任何精灵都需要isPaused = false。

答案 2 :(得分:0)

你好,我有同样的问题。以下是我的解决方案:

override func didMove(to view: SKView) {
    sleep(1)
}

但是,这不是好方法。希望能为您提供暂时的帮助。 如果您解决此问题或找到更好的解决方案,请回复我,谢谢。

答案 3 :(得分:0)

遗憾的是,此问题在Xcode10中仍然存在。如果直接或作为父节点使用定制类,解决此问题的最简单方法是将const cheerio = require('cheerio'); var html = ` <div id="seriesDiv" style="margin-top: 0px;"> <table class="tableFile2" summary="Results"> <tbody><tr> <th scope="col" width="7%">Filings</th> <th scope="col" width="10%">Format</th> <th scope="col">Description</th> <th scope="col" width="10%">Filing Date</th> <th scope="col" width="15%">File/Film Number</th> </tr> <tr> <td nowrap="nowrap">4</td> <td nowrap="nowrap"><a href="/Archives/edgar/data/1087294/000120919119051031/0001209191-19-051031-index.htm" id="documentsbutton">&nbsp;Documents</a></td> <td class="small">Statement of changes in beneficial ownership of securities<br>Acc-no: 0001209191-19-051031 Size: 9 KB </td> <td>2019-09-27</td> <td></td> </tr> <tr class="blueRow"> <td nowrap="nowrap">4</td> <td nowrap="nowrap"><a href="/Archives/edgar/data/1087294/000120919119050363/0001209191-19-050363-index.htm" id="documentsbutton">&nbsp;Documents</a></td> <td class="small">Statement of changes in beneficial ownership of securities<br>Acc-no: 0001209191-19-050363 Size: 50 KB </td> <td>2019-09-20</td> <td></td> </tr> `; const $ = cheerio.load(html); var tables = $("#seriesDiv").find("table"); var trs = $(tables).find("tr"); for ( let i = 0; i < trs.length; i++ ){ let tds = $(trs[i]).find("td"); let ths = $(trs[i]).find("th"); for ( let j = 0; j < ths.length; j++ ){ console.log($(ths[j]).text()); } for ( let j = 0; j < tds.length; j++ ){ console.log($(tds[j]).text()); } } 添加到定制类的self.isPaused = false方法中。