Sprite kit 如何在不是SKScene的任何节点上使用SKNode FileName:initializer

Sprite kit 如何在不是SKScene的任何节点上使用SKNode FileName:initializer,sprite-kit,skscene,sknode,Sprite Kit,Skscene,Sknode,我刚才问过,但从那以后,似乎SKNode现在有了这个漂亮的初始化器init?(fileNamed filename:String)可以从.sks文件中取消归档场景。问题是,这个初始值设定项在SKNode上,而不是SKScene,所以我尝试(主要是出于程序员的好奇心)在一个节点上使用它,任何不是SKScene或其子类的节点上 现在我知道我可以将想要的节点作为.sks文件的子节点,使用SKNode(文件名:…)加载场景,然后使用childNode拉出节点(名称:…。但是既然为SKNode声明了名为f

我刚才问过,但从那以后,似乎
SKNode
现在有了这个漂亮的初始化器
init?(fileNamed filename:String)
可以从.sks文件中取消归档场景。问题是,这个初始值设定项在
SKNode
上,而不是
SKScene
,所以我尝试(主要是出于程序员的好奇心)在一个节点上使用它,任何不是
SKScene
或其子类的节点上

现在我知道我可以将想要的节点作为.sks文件的子节点,使用
SKNode(文件名:…
)加载场景,然后使用
childNode拉出节点(名称:…
。但是既然为
SKNode
声明了名为
fileNamed
的初始值设定项,您应该能够直接加载
SKNode
并剪切
SKScene
中间人。如果不可能,那么为什么不在
SKScene
中声明初始值设定项

因此,我尝试了这个方法,但似乎强烈建议.sks文件的根节点是
SKScene
的后代,如此对话框所示:

无视警告,我创建了一个.sks文件,如下所示:

我将根场景设置为
SKNode
子类的自定义类,并得到以下生成错误:

[MyProject.SolarSystemNode setBlendMode:]: unrecognized selector sent to instance
这是因为
blendMode
属性是在
SKEffectNode
上声明的。类继承是在
SKNode
->
SKEffectNode
->
SKScene
上声明的。因此显然,
fileNamed:
初始值设定项,尽管在
SKNode
上声明,却调用了
SKEffectNode
上的属性

那么,是否可以直接加载
SKNode
,或者我无法按如下方式排列节点树:


首先加载场景,然后拉出solarSystemNode?如果可以使用名为的初始化器直接从.sks文件加载
SKNode
,那么有人能给我举个例子,最好是在Swift 3中?如果不可能,有人能告诉我为什么文件名为i吗initializer将在
SKNode
上声明,而不是
SKScene

喝得酩酊大醉,无法给出正确的答案,但这不是
SKReferenceNode
的目的吗?@Fluidity谢谢!我一直想深入研究
SKReferenceNode
。我很难找到文档或教程来教你如何使用它不要在场景编辑器中显示它,以及如何正确地从代码中加载它。大多数只在编辑器中显示它,少数以编程方式显示它的人,不会显示它是如何在编辑器中设置的。当他们显示一个时,我想知道他们是如何设置另一个的。如果你有空闲时间清醒了,你能给我一个演示吗,或者给我一个完整的教程?不管怎样,谢谢你的提醒!@fluity我应该提到,我开始玩它,导致xcode崩溃,甚至在我重新启动后也拒绝重新打开。我必须在xcode打开我的项目之前删除sprite工具包场景文件。我想我导致引用节点引用了它包含的内容场景。我猜Xcode不喜欢无限循环!我很快会在这里写一些东西。如果我忘记了xD,一天之内给我发消息