gpt4 book ai didi

swift - 以编程方式添加 SKReferenceNode

转载 作者:搜寻专家 更新时间:2023-10-31 21:53:19 25 4
gpt4 key购买 nike

我有很长的 2d 关卡,所以我将它分成更多的 .sks 文件。我有“GameScene”,我可以通过拖放将它们加入到场景编辑器中。它创建 SKReferenceNodes。我已经成功地做到了。但是我想在代码中需要时延迟加载这些部分(据说这是一种很好的做法)。我在这方面失败了。

这是代码的特殊部分:

if let nextPart = SKReferenceNode(fileNamed: "Scene2_city2") {
if self.childNodeWithName("Scene2_city2") == nil {
self.addChild(nextPart)
}
}

"Scene2_city2"是.sks文件的名称,也是文件中Scene的名称。

运行代码出现错误:

*** Terminating app due to uncaught exception 'Cant add body, already exists in a world', reason: 'Cant add body type: representedObject:[ name:'Scene2_city2' frame:{{-0, -0}, {1024, 768}} anchor:{0, 0}], already exists in a world'

这很奇怪,因为我在添加之前先检查它。

问题:我应该如何以编程方式将 SKReferenceNode 添加到 SKScene 中?

编辑:这里是 simple example project在位桶上。添加引用场景以供点击。

最佳答案

我找到了一个解决方法,事实证明在使用 URL 方法创建 SKReferenceNode 时没有问题。例如:

let path = NSBundle.mainBundle().pathForResource("SpaceShip", ofType: "sks")
let spaceShip = SKReferenceNode (URL: NSURL (fileURLWithPath: path!))
addChild(spaceShip)

我做了一点挖掘,当使用 fileNamed 创建 SKReferenceNode 时,它出现在 7.3.1 和 7.2.1 中,它现在返回一个可选的。展开后,您会得到 SKScene,如果您尝试将其作为子场景添加到现有场景中,它当然会抛出错误。

添加了一个快速的 7.3 测试项目 https://github.com/cocojoe/SKReferenceNodeIssue/tree/workaround

请注意,您在 Apple 论坛上引用了我的帖子。我大约一个月前填写了一份错误报告,根据以往的经验,这些问题可能需要一段时间才能得到检查。

关于swift - 以编程方式添加 SKReferenceNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36388900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com