【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 });
}
相关推荐
做cv的小昊2 小时前
大语言模型系统:【CMU 11-868】课程学习笔记02——GPU编程基础1(GPU Programming Basics 1)
人工智能·笔记·学习·语言模型·llm·transformer·agent
炽烈小老头7 小时前
【每天学习一点算法 2026/03/08】相交链表
学习·算法·链表
red_redemption9 小时前
自由学习记录(130)
学习·soa·aos·ecs已成核心包·shading!=ps
双叶8369 小时前
(Python)Python爬虫入门教程:从零开始学习网页抓取(爬虫教学)(Python教学)
后端·爬虫·python·学习
天外来鹿10 小时前
Map/Set/WeakMap/WeakSet学习笔记
前端·javascript·笔记·学习
峥嵘life10 小时前
Android16 【GTS】 GtsDevicePolicyTestCases 测试存在Failed项
android·linux·学习
leixj02510 小时前
SVN学习笔记
笔记·学习·svn
毕设源码_廖学姐11 小时前
计算机毕业设计springboot古诗词学习App 基于SpringBoot的中华经典诗文数字化研习平台 SpringBoot框架下的传统诗词文化移动学习系统
spring boot·学习·课程设计
盐焗西兰花12 小时前
鸿蒙学习实战之路-Share Kit系列(7/17)-自定义分享面板操作区
linux·学习·harmonyos
香水5只用六神12 小时前
【RTOS快速入门】07_同步互斥与通信概述
单片机·嵌入式硬件·学习·操作系统·freertos·rtos·嵌入式软件