这个可能是最简单方便的办法了,在场景中找到想要转换的 GameObject ,挂载 Convert To Entity 就可以进行转换了
需要提的一点是,这个组件有两种 Conversion Mode
Convert And Destroy | 转换后 删除 原有 GameObject |
Convert And Inject GameObject | 转换后 保留 原有 GameObject |
这个应该是最常用的办法了,生成的Entity会生成在和 EntityManager 相同的 World 中
EntityManager.CreateEntity( ) | 可以什么参数都不填,生成一个空的 Entity |
EntityManager.CreateEntity(params ComponentType[]) | 填入不定项个 ComponentType,可以直接生成带有这个 Component的Entity |
EntityManager.CreateEntity(EntityArchetype) | 利用原型 Archetype 来生成 Entity |
EntityManager.Instantiate(Entity) | 克隆一个现有的 Entity |
我们可以创建一个用来生成的类 Spawner ,继承 MonoBehaviour ,并实现 IDeclareReferencedPrefabs , IConvertGameObjectToEntity 接口
这个时候需要我们去实现接口中的两个方法,其中DeclareReferencedPrefabs的操作是referencedPrefabs.Add(Prefab)
这个Prefab是我们外部加载的GameObject,这个方法会在场景中生成一个Entity类型的一个Prefab
之后我们来实现Convert这个方法
首先我们来创建一个ComponentData,我们要确保这个里面包含Entity字段,并在Convert这个方法里使用conversionSystem.GetPrimaryEntity()将这个 Prefab 转化为 Entity 加载进去
最后我们使用dstManager.AddComponentData()方法,将这个ComponentData挂载到我们之前创建好的Entity当中
此时,我们就可以利用这个Entity来创建我们外部加载的Prefab了~