2015-07-05 47 views
5

我想使用我自定义的SKNode子类创建一个关卡。我尝试在场景编辑器中添加一个SKNode,并使用“Custom Class”选项卡给予我想要的类,但那完全没有。节点仍然是空的,当我运行模拟器时什么也不显示。另外,为了确保该类实际工作,我通过编程方式将其实例添加到场景中,以查看它是否显示并确实显示。在spritekit场景编辑器中使用自定义SKNode

如何通过场景编辑器将自定义节点添加到场景中?

这里是我的自定义类代码:

class Player: SKSpriteNode { 
    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     print("Test") 
     self.addChild(SKSpriteNode(imageNamed: "Player.png")) 
    } 
} 
+0

您使用的是Xcode 7对不对? –

+0

@EpicByte是的,我是。 –

回答

5

有两件事情你需要做的:

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") 
    } 
} 
+0

好吧,我这样做了,在我的编码器init中,我添加了一个带有图形的SKSpriteNode到节点,但它仍然不会显示在没有代码的场景中。 –

+0

嗯......这很奇怪;这绝对是为我工作。你有没有尝试清洁,然后再次运行它?你想要设置自定义类的什么样的节点? – ABakerSmith

+0

你介意发布自定义子类中的代码吗? –

0

我在Xcode 8.有同样的问题 这听起来很愚蠢,但应用自定义类我必须在运行之前保存 .sks文件。

.sks文件不会自动保存,不像文本文件或故事板。