在spritekit场景编辑器中使用自定义SKNode

时间:2015-07-05 13:08:11

标签: xcode swift sprite-kit skspritenode skscene

我想使用我的自定义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"))
    }
}

2 个答案:

答案 0 :(得分:6)

您需要做两件事:

1)设置自定义类时,必须在类名前加上应用程序的名称;例如My_App_Name.MyClass,其中_表示空格。

2)您的SKNode子类需要实现required init?(coder aDecoder: NSCoder)

例如,在我的名为“MyGame”的项目中:

enter image description here

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文件不会自动保存。