我想使用我的自定义SKNode子类创建一个关卡。我尝试将SKNode添加到场景编辑器并使用" Custom Class" tab给出了我想要的类,但绝对没有。该节点仍然是空的,当我运行模拟器时没有任何显示。另外,为了确保该类实际工作,我以编程方式将它的一个实例添加到场景中,以查看它是否显示它。
如何通过场景编辑器将自定义节点添加到场景中?
这是我的自定义类代码:
class Player: SKSpriteNode {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
print("Test")
self.addChild(SKSpriteNode(imageNamed: "Player.png"))
}
}
答案 0 :(得分:6)
您需要做两件事:
1)设置自定义类时,必须在类名前加上应用程序的名称;例如My_App_Name.MyClass
,其中_
表示空格。
2)您的SKNode
子类需要实现required init?(coder aDecoder: NSCoder)
。
例如,在我的名为“MyGame”的项目中:
class MyNode: SKSpriteNode {
// Set this after the node has been initaliser by init(coder:)
var someStat: Int = 0
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
// To check it worked:
print("Yup, all working")
}
}
答案 1 :(得分:0)
我在Xcode 8中遇到了同样的问题。 这听起来很愚蠢,但要应用自定义类,我必须在运行之前保存 .sks文件。
与文本文件或故事板不同,.sks文件不会自动保存。