【Unity3D】ECS入门学习(六)状态组件 ISystemStateComponentData

当需要获知组件是否被销毁时,ECS是没有回调告知的,因此可以将组件继承于ISystemStateComponentData接口,这样即使组件的实体被销毁了,该组件本身是不会消失的,所以可以通过在组件实体销毁后,去设置状态组件的数据来标记为已销毁状态,从而得知该组件的实体已销毁。

cs 复制代码
using Unity.Entities;

[GenerateAuthoringComponent]
public struct MarkStateComponentData : ISystemStateComponentData
{
    public int state;
}
cs 复制代码
//(6)状态组件
//查询状态组件
EntityManager entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;
var query = entityManager.CreateEntityQuery(typeof(MarkStateComponentData));
//销毁组件实体,但由于挂载的是状态组件,故实体并未真正销毁
entityManager.DestroyEntity(query);

//遍历实体 修改state=-1标记为已销毁
foreach(var v in query.ToEntityArray(Allocator.TempJob))
{
    entityManager.SetComponentData(v, new MarkStateComponentData() { state = -1 });
}
相关推荐
Ki138110 分钟前
我的AI学习小结:从入门到放弃
人工智能·学习
Yilena13 分钟前
通过mysqldump进行数据迁移时权限不足的解决方案
数据库·学习
●VON1 小时前
小V健身助手开发手记(四):打造专属健康空间——以 PersonContent构建统一风格的个人中心
人工智能·学习·openharmony·开源鸿蒙·von
●VON1 小时前
小V健身助手开发手记(三):用成就点燃坚持——构建可视化激励系统
学习·openharmony·总结·开源鸿蒙·von
Nan_Shu_6141 小时前
学习:Vue (2)
javascript·vue.js·学习
YJlio2 小时前
桌面工具学习笔记(11.1):BgInfo——给服务器桌面“刻”上关键信息
服务器·笔记·学习
TL滕2 小时前
从0开始学算法——第十五天(滑动窗口)
笔记·学习·算法
失败才是人生常态2 小时前
并发编程场景题学习
学习
醇氧2 小时前
springAI学习 一
学习·spring·ai·ai编程
菜鸟‍2 小时前
【论文学习】Co-Seg:互提示引导的组织与细胞核分割协同学习
人工智能·学习·算法