当一个实体被删除时,会有以下几步操作
- 查找引用该实体的所有组件
- 删除这些组件
- 回收实体的 ID 以供重新使用
但当存在 State 组件时,实体不会被删除,只会删除除了 State 组件以外的组件
当配合使用 StateComponentData 与 ComponentData 时可以实现观察实体当前的状态
Tag(ComponentData) | State(StateComponentData) |
---|---|
Tag 存在,State 缺失 | 实体刚被创建,未被初始化 |
Tag 存在,State 存在 | 实体已被初始化,可以使用 |
Tag 存在,State 存在 | 实体处于删除状态 |
例如:
Entities
.WithAll<Tag>()
.WithNone<State>()
.WithStructuralChanges()
.ForEach((Entity entity) =>{
// Spawn
}).Run();
Entities
.WithAll<Tag>()
.WithAll<State>()
.ForEach((Entity entity) =>{
// Update
}).Run();
Entities
.WithNone<Tag>()
.WithAll<State>()
.ForEach((Entity entity) =>{
// Destroy
}).Run();