【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 });
}
相关推荐
inferno10 分钟前
SVN学习笔记(二)
笔记·学习·svn
传奇开心果编程31 分钟前
【ArkUI进阶练中学】第12课:应用架构演进与遗留系统迁移
学习·ui·华为·harmonyos
我想我不够好。32 分钟前
装一个纯净的系统
学习
小黄蚁1 小时前
使用LVGL模拟示波器创建正弦函数波形
单片机·学习
辣知2 小时前
辣知·化智71 四川广汉三星堆的金铜贝
学习
天天进步20152 小时前
90天AI接单学习路线:从LLM应用到AI Agent
人工智能·学习
vx_Biye_Design2 小时前
springboot小学生英语学习APP62773-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·学习·课程设计
@Mike@2 小时前
13-数据库学习笔记(查询执行处理模型)
数据库·笔记·学习
传奇开心果编程3 小时前
【ArkUI进阶练中学】第13课:元服务与卡片开发
学习·ui·华为·harmonyos
Highcharts.js3 小时前
可视化商用图表库对比,如何选择?
前端·javascript·学习·信息可视化·highcharts·前端可视化