可以使用以下方法删除实体的组件:
entity.removeComponentForClass(SpriteComponent.self);
entity.removeComponentForClass(PhysicsComponent.self);
如何从 SKScene 中删除实体?
有很多关于删除组件的教程,但我找不到任何关于删除实体的明确内容。有没有类似删除节点的东西?
node.removeFromParent();
可以使用以下方法删除实体的组件:
entity.removeComponentForClass(SpriteComponent.self);
entity.removeComponentForClass(PhysicsComponent.self);
如何从 SKScene 中删除实体?
有很多关于删除组件的教程,但我找不到任何关于删除实体的明确内容。有没有类似删除节点的东西?
node.removeFromParent();
我改编自 Apple 的 DemoBots,其中包含RenderComponent和LayerConfiguration的示例。
在此处使用 Swift 解决方案扩展数组 >>数组扩展以按值删除对象
var entities = [GKEntity]()
/// Stores a reference to the root nodes for each world layer in the scene.
var layerNodes = [LayerConfiguration:SKNode]()
func addEntity(entity: GKEntity)
{
self.entities.append(entity)
for componentSystem in self.componentSystems
{
componentSystem.addComponent(foundIn: entity)
}
// If the entity has a `RenderComponent`, add its node to the scene.
if let renderNode = entity.component(ofType: RenderComponent.self)?.node
{
self.addNode(node: renderNode, toLayer: .actors)
}
}
func removeEntity(entity:GKEntity)
{
for componentSystem in self.componentSystems
{
componentSystem.removeComponent(foundIn: entity)
}
if let renderNode = entity.component(ofType: RenderComponent.self)?.node
{
renderNode.removeFromParent()
}
self.entities.remove(entity)
}
func addNode(node: SKNode, toLayer layer: LayerConfiguration)
{
//
let layerNode = self.layerNodes[layer]!
layerNode.addChild(node)
}