2016-01-19 48 views
0

我正在GameScene上工作,並且在場景編輯器中設置了一些節點,因爲我想將它們直觀地放置在關卡中。 節點的所有名稱都從「platform1」到「platform5」。根據級別的不同,平臺節點或多或少。將SpriteKit節點動態移動到一個數組

當水平加載我想枚舉所有節點的標題,如「平臺*」,並把它們放入一個數組。 現在我使用enumerateChildNodesWithName,但是我沒有讓代碼塊正常工作。 這是我到目前爲止有:

enumerateChildNodesWithName("//platform*", usingBlock: {node, _ in 
     if let platform = node as? PlatformNode { 
      print(platform.name) 
     } 
    }) 

而且它打印出以下錯誤信息:

CUICatalog:無效請求:請求亞型沒有指定 成語

但平臺名稱不會打印出來。 任何想法如何實現這一目標?

我的下一個目標是將每個平臺放到一個數組中,這樣我就可以通過數組訪問每個平臺的屬性。

有人有幫助嗎?

在此先感謝...

回答

1

如果您在場景編輯器中添加平臺的SKNode容器,它們會自動添加到容器的子陣列(順序他們被添加)。然後,您可以訪問該平臺與

if let platforms = childNodeWithName("platforms") { 
     for platform in platforms.children { 
      print ("\(platform.name)") 
     } 
    } 

爲平臺在場景編輯器添加到SKNode,添加SKNode(列爲空)的編輯器,設置適當的SKNode的名稱(例如,平臺),並通過在編輯器中設置平臺的父屬性來設置每個平臺的父級(參見下圖)。

enter image description here

+0

謝謝 - 工作得很好:) – boehmatron

0

您的搜索字符串不正確。你可以這樣說:

class PlatformNode:SKSpriteNode{ 

} 

class GameScene: SKScene { 

override func didMoveToView(view: SKView) { 


    let p1 = PlatformNode() 
    p1.name = "platform1" 

    let p2 = PlatformNode() 
    p2.name = "platform2" 

    let p3 = PlatformNode() 
    p3.name = "platform3" 

    let p4 = PlatformNode() 
    p4.name = "platform4" 

    let p5 = PlatformNode() 
    p5.name = "platform5" 


    addChild(p1) 
    addChild(p2) 
    addChild(p3) 
    addChild(p4) 
    addChild(p5) 


    enumerateChildNodesWithName("platform[1-3]", usingBlock: {node, _ in 
     if let platform = node as? PlatformNode { 
      print(platform.name) 
     } 
    }) 
} 

} 

這會給你所有命名platform1platform2platform3平臺。要檢索名爲platform4和platform5節點,你會搜索字符串改成這樣:

"platform[1-5]" 
+0

我也想加入的節點到現場等中提出的,但我想在場景編輯器中添加節點。因爲這些節點從一個層次變爲另一個層次,我想將這些節點直觀地放置,而不是使用代碼。任何想法如何讓節點進入數組? – boehmatron

+0

@boehmatron與Epsilon指出的一樣,當節點被添加到父節點時,它會自動添加到父節點的子節點數組中。所以我想這是你的問題的答案,如果所有的節點都有相同的父節點。如果沒有,您可以執行[高級搜索](https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/),或者逐一列舉每個父母(再次,如從Epsilon的回答)。 – Whirlwind

+0

謝謝你的輸入,這似乎工作得很好:) – boehmatron

相關問題