使用 Convert To Entity 组件

这个可能是最简单方便的办法了,在场景中找到想要转换的 GameObject ,挂载 Convert To Entity 就可以进行转换了

需要提的一点是,这个组件有两种 Conversion Mode

Convert  And Destroy转换后 删除 原有 GameObject
Convert And Inject GameObject转换后 保留 原有 GameObject

使用 EntityManager 创建实体

这个应该是最常用的办法了,生成的Entity会生成在和 EntityManager 相同的 World 中

EntityManager.CreateEntity( )可以什么参数都不填,生成一个空的 Entity
EntityManager.CreateEntity(params ComponentType[])填入不定项个 ComponentType,可以直接生成带有这个 Component的Entity
EntityManager.CreateEntity(EntityArchetype)利用原型 Archetype 来生成 Entity
EntityManager.Instantiate(Entity)克隆一个现有的 Entity

创建一个Spawner来生成实体

我们可以创建一个用来生成的类 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了~