如何在 SpriteKit 场景编辑器中访问导航图的对象
Posted
技术标签:
【中文标题】如何在 SpriteKit 场景编辑器中访问导航图的对象【英文标题】:How to access the object of Navigation graph in SpriteKit scene editor 【发布时间】:2017-06-28 09:44:57 【问题描述】:我正在使用 SpriteKit 并借助 xcode 中的场景编辑器绘制场景。根据 SpriteKit,我们可以使用导航图绘制路径,我可以使用导航图绘制路径,但我无法在 swift 后端访问此对象。
如何从场景中访问此导航图对象。
【问题讨论】:
@Ron 你知道吗? 这个SO Question 正在讨论同样的问题,并提供了解决方案。 @MarkBrownsword 我有这个问题,那就是如何从我的 soritescene 中获取该图形对象。 【参考方案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
这些 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: $0.name == "GraphName")
【讨论】:
很好,很好的答案。我的错误是我尝试使用 SKScene。 嗨,你知道你在 Objective-C 中是如何做到这一点的吗?以上是关于如何在 SpriteKit 场景编辑器中访问导航图的对象的主要内容,如果未能解决你的问题,请参考以下文章
如何在另一个视图控制器中访问 SpriteKit 场景的变量?
如果使用编辑器中的场景加载,如何在 SpriteKit 中检测触摸