2015-07-05 48 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文件不會自動保存,不像文本文件或故事板。