私はSpriteKitを使用していて、xcodeのシーンエディタを使用してシーンを描画しています。 SpriteKitによれば、ナビゲーショングラフを使用してパスを描画することができ、ナビゲーショングラフを使用してパスを描画できますが、このオブジェクトに迅速にバックエンドでアクセスすることはできません。シーンからこのナビゲーショングラフオブジェクトにアクセスする方法SpriteKitシーンエディタでナビゲーショングラフのオブジェクトにアクセスする方法
。
私はSpriteKitを使用していて、xcodeのシーンエディタを使用してシーンを描画しています。 SpriteKitによれば、ナビゲーショングラフを使用してパスを描画することができ、ナビゲーショングラフを使用してパスを描画できますが、このオブジェクトに迅速にバックエンドでアクセスすることはできません。シーンからこのナビゲーショングラフオブジェクトにアクセスする方法SpriteKitシーンエディタでナビゲーショングラフのオブジェクトにアクセスする方法
。
デフォルトの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"})
ニース良い、素晴らしい答え。私の間違いはSKSceneで試したことです。 – Araf
@Ronあなたはそれを知っていましたか? – Araf
この[SOの質問](https://stackoverflow.com/questions/41207550/gameplaykit-scene-editor-navigation-graph-how-to-use-it-for-pathfinding)は、同じ問題を回避策で解決していますソリューションが提供されます。 –
@ MarkBrownsword私はその質問を受けました。その場合、そのグラフオブジェクトを私のソリテシーンにいかに得るか。 – Araf