2014-11-05 38 views
7

我使用SpriteKit(Objective-C)在XCode中創建了一個相當簡單的(在這一點上是實驗性的)「遊戲」。如何獲取通過SpriteKit Editor創建的項目的SKSpriteNode?

我知道如何手動創建一個SKSpriteNode對象並將其添加到SKScene中 - 但我有點想做相反的事情 - 我在XCode SceneKit GUI本身中創建了Sprite(並給出了它的名字),現在我想retreive它在我的代碼。

在之前使用XCode的經驗中,您可以通過聲明一個@property UIOutlet [etc]然後將其作爲IB/Storyboard UI內的引用插座連接 - 但我找不到任何類似的方法來做到這一點在SpriteKit UI中。我可以創建一個屬性(作爲SKSpriteNode),並將其命名爲與我的SpriteKit對象相同 - 它顯示在SKScene下(在調試器中),但是是「無」 - 即不是「關聯」與我在XCode SpriteKit UI中創建的對象一起使用。

我錯過了什麼 - 或者完全錯誤嗎? :-O

回答

10

如果設置在雪碧包編輯器中的一個節點的name屬性,你可以訪問節點,在斯威夫特,通過

if let node = self.childNodeWithName("NodeName") as? SKSpriteNode { 
    // Set up your sprite here 
} 

SKSpriteNode *node = (SKSpriteNode *)[self childNodeWithName:@"NodeName"]; 

在Obj- C。

+0

注意:此機制僅適用於節點是場景的直接子節點。如果更復雜,則需要使用多個呼叫手動移動節點樹。 – bshirley 2015-03-05 16:14:53

+6

@bshirley如果將「//」添加到名稱的前面(例如「// NodeName」),則SpriteKit將通過節點樹進行遞歸搜索。 – 0x141E 2015-03-11 18:13:15

+0

@ 0x141E你有沒有看到這個問題http://stackoverflow.com/questions/38525232/replacing-calayer-and-cabasicanimation-with-skscene-and-skactions – ItsMeAgain 2016-08-23 14:37:56

相關問題