Xcode 8 用の SpriteKit/GameplayKit プロジェクトと、Entity-Component 情報をシーンに追加できる新しい Scene Editor を更新しています。エンティティ コードをシーンに移動しましたが、対応するノードからエンティティにアクセスできません。Appleのドキュメントによると:
エンティティまたはコンポーネントをアタッチしたシーン内の SpriteKit ノードには、ノードとそれが表す GKEntity オブジェクトとの間の関係を管理するための GKSKNodeComponent オブジェクトが自動的に含まれます。
と
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