2017-06-28 10 views
4

私はSpriteKitを使用していて、xcodeのシーンエディタを使用してシーンを描画しています。 SpriteKitによれば、ナビゲーショングラフを使用してパスを描画することができ、ナビゲーショングラフを使用してパスを描画できますが、このオブジェクトに迅速にバックエンドでアクセスすることはできません。シーンからこのナビゲーショングラフオブジェクトにアクセスする方法SpriteKitシーンエディタでナビゲーショングラフのオブジェクトにアクセスする方法

enter image description here

+0

@Ronあなたはそれを知っていましたか? – Araf

+0

この[SOの質問](https://stackoverflow.com/questions/41207550/gameplaykit-scene-editor-navigation-graph-how-to-use-it-for-pathfinding)は、同じ問題を回避策で解決していますソリューションが提供されます。 –

+1

@ MarkBrownsword私はその質問を受けました。その場合、そのグラフオブジェクトを私のソリテシーンにいかに得るか。 – Araf

答えて

1

デフォルトのSpriteKitテンプレートでは、GameViewControllerには、viewDidLoadのセクションにシーンエディタのエンティティとグラフをコピーするセクションがあります。

class GameViewController: UIViewController { 
    private var sceneNode: GameScene! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Load 'GameScene.sks' as a GKScene. 
     if let scene = GKScene(fileNamed: "GameScene") { 

      // Get the SKScene from the loaded GKScene 
      if let sceneNode = scene.rootNode as! GameScene? { 
       self.sceneNode = sceneNode 

       self.sceneNode.entities = scene.entities // <-- entities loaded here 
       self.sceneNode.graphs = scene.graphs // <-- graphs loaded here 

       // ... other scene loading code 
      } 
     } 
    } 
} 

これらのエンティティとグラフの配列変数は、GameSceneで宣言されています。次に、配列からグラフを取得します。

class GameScene : SKScene { 
    var entities = [GKEntity]() 
    var graphs = [String : GKGraph]() 
    var navigationGraph: GKGraph<GKGraphNode>! 

    override func didMove(to view: SKView) { 
     self.navigationGraph = self.graphs.values.first // <-- get a reference to your graph 
    } 
} 

SpriteKit Editorに複数のグラフがある場合は、クエリを使用して名前で検索します。

self.navigationGraph = self.graphs.values.first(where: {$0.name == "GraphName"}) 
+1

ニース良い、素晴らしい答え。私の間違いはSKSceneで試したことです。 – Araf

関連する問題