如何在 SpriteKit 场景编辑器中访问 Navigation Graph 的对象

How to access the object of Navigation graph in SpriteKit scene editor

我正在使用 SpriteKit 并在 xcode 中的场景编辑器的帮助下绘制场景。根据 SpriteKit,我们可以使用导航图绘制路径,我可以使用导航图绘制路径,但我无法在 swift 后端访问此对象。

如何从场景中访问这个导航图对象。

在默认的 SpriteKit 模板中,GameViewControllerviewDidLoad 函数中有一个部分用于复制场景编辑器实体和图形。

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
            }
        }
    }
}

这些 Entities 和 Graphs 数组变量在 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 编辑器中有多个图形,则使用查询按名称检索它。

self.navigationGraph = self.graphs.values.first(where: {[=12=].name == "GraphName"})