如何使用XCode Sprite Kit场景编辑器将实体添加到Sprite Kit场景?

时间:2017-08-23 03:08:03

标签: ios sprite-kit gameplay-kit

根据实体和组件的Sprite Kit文档

  

当您将实体(及其组件)添加到Xcode SpriteKit场景编辑器中的场景时,Xcode会自动将这些实体存档到SpriteKit场景内容中。

这意味着您可以使用场景编辑器添加实体,但我找不到任何方法来执行此操作。我可以使用节点组件检查器添加组件,但不能添加实体。这是怎么做到的?

2 个答案:

答案 0 :(得分:3)

您的实体未添加到SpriteKit场景中 - 它们将添加到抽象GKScene中。

当您使用SpriteKit编辑器时,您可以将您的节点视为您的实体;如果你向一个精灵添加一个组件,比如说,然后加载GKScene,你将拥有一个包含两个组件的实体:你添加到sprite的组件,以及一个指向该节点的GKSKNodeComponent。

Sprite Kit场景编辑器允许您做的是通过自动创建代表SKScene&#39的实体,从GKScene(不具备SpriteKit场景或其结构)和SpriteKit场景获得良好的映射。 ; s节点,并为您提供了一种方法,可以将组件附加到与SKScene中的姐妹节点关联的实体,这样您就不必以编程方式进行操作。

当然,您可以添加自己的抽象实体,并将组件附加到SpriteKit场景编辑器提供的组件之外。但是目前,您必须在场景编辑器之外以编程方式执行此操作,因为场景编辑器没有与节点无关的实体的概念。 (但是,我怀疑你会发现你可以使用一个空的SKNode作为这些类型组件的容器,而且只需很少的开销就可以轻松管理。换句话说,我不会#39;认为与在SpriteKit场景编辑器中与其他所有实体和组件一起使用它们相比,您可以从代码中手动管理这些实体和组件获得更多价值。)

答案 1 :(得分:1)

在场景编辑器中将组件添加到SKScene时,会自动创建实体并将其添加到SKNode 中的实体数组中

  1. 创建GKComponent的子类。
  2. 打开“场景编辑器”(单击您的GameScene.sks)。
  3. 选择场景中的一项(或从库中添加一项)。
  4. 打开组件检查器(opt-cmd-7),然后单击加号(+)以 选择您的GKComponent子类。

您可以看到通过将以下代码段添加到场景的update(_:)方法中来创建实体。该代码段访问每个实体,搜索GKSKNodeComponent的组件(当您将组件添加到SKNode时由场景编辑器添加),然后访问其节点(您在添加了组件的场景):

for entity in self.entities {
    if let node = entity.component(ofType: GKSKNodeComponent.self)?.node {
        print("node: \(node)")
    }
}