我一直在为 Xcode 8 和新的场景编辑器更新 SpriteKit/GameplayKit 项目,它允许将实体组件信息添加到场景中。我一直在将我的实体代码移动到场景中,但是我无法从相应的节点访问实体。根据 Apple 的文档:
场景中您附加了一个实体或组件的任何 SpriteKit 节点都会自动拥有一个 GKSKNodeComponent 对象来管理节点与其所代表的 GKEntity 对象之间的关系。
和
将 GKSKNodeComponent 对象添加到实体会自动更新组件的 SpriteKit 节点(SKNode 对象)的实体属性以指向该实体。
我要加载场景的新代码基本如下:
guard let newTowerScene = GKScene(fileNamed: "TowerScene"),
let rootScene = newTowerScene.rootNode as? SKScene
else { return }
self.view?.presentScene(rootScene, transition: SKTransition.push(with: .up, duration: 1.75))
访问该GKScene
对象会返回一个正确加载的实体数组,但如果我尝试GKEntity.entity
从连接的节点访问一个实体,它会返回 nil。该节点是通过GKSKNodeComponent.node
从 中的实体访问来连接的GKScene
。
如何按预期获取GKSKNodeComponent
并GKScene
自动更新SKNode
的属性?entity