【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 });
}
相关推荐
weixin_5142218530 分钟前
FDTD代码学习-1
学习·算法·lumerical·fdtd
兔兔爱学习兔兔爱学习42 分钟前
Spring Al学习9:模型上下文协议(MCP)
java·学习·spring
武子康1 小时前
AI研究-118 具身智能 Mobile-ALOHA 解读:移动+双臂模仿学习的开源方案(含论文/代码/套件链接)
人工智能·深度学习·学习·机器学习·ai·开源·模仿学习
tt5555555555551 小时前
《神经网络与深度学习》学习笔记一
深度学习·神经网络·学习
TL滕2 小时前
从0开始学算法——第一天(如何高效学习算法)
数据结构·笔记·学习·算法
仰望—星空2 小时前
MiniEngine学习笔记 : CommandAllocatorPool
笔记·学习
kblj55553 小时前
学习Linux——网络——网卡
linux·网络·学习
暖阳之下3 小时前
学习周报二十
人工智能·深度学习·学习
charlie1145141913 小时前
CSS学习笔记3:颜色、字体与文本属性基础
css·笔记·学习·教程·基础
wangqiaowq4 小时前
PAIMON+STARROCKS 学习
学习