学习ECS中,记录一下
// 获取当前世界的EntityManager
var entityManger = World.DefaultGameObjectInjectionWorld.EntityManager;
// 关于 GameObjectConversionSettings
// 注释里暂时没解释,猜测应该是作用于转换Gameobject到Entity的缓存或其他配置的
var goConvSetting = GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld, new BlobAssetStore());
// 将Prefab转换成Entity
var preEntity = GameObjectConversionUtility.ConvertGameObjectHierarchy(entityPrefab, m_gcs);
// 将Entity实例化
var entity = entityManger.Instantiate(preEntity);
// 将BlobAssetStore释放,否则在结束游戏的时候会报错:
// A Native Collection has not been disposed, resulting in a memory leak.
// 建议将释放放在转换完毕之后
// 或者懒得管的话就放在 OnApplicationQuit 里
goConvSetting.BlobAssetStore.Dispose();
文章评论