【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 });
}
相关推荐
winlife_34 分钟前
在 Unity Editor 里跑 HTTP MCP server:主线程边界与请求 marshal 的实现要点
http·unity·游戏引擎·多线程·mcp
被考核重击37 分钟前
WASM学习笔记
笔记·学习·wasm
MediaTea43 分钟前
人工智能通识课:机器学习之监督学习
人工智能·学习·机器学习
三品吉他手会点灯1 小时前
C语言学习笔记 - 27.C编程预备计算机专业知识 - 什么是字节
c语言·开发语言·笔记·学习
yunhuibin1 小时前
videopipe学习之节点数据流转机制探索
学习
憧憬成为java架构高手的小白1 小时前
n8n学习(基于b站秋芝2046)
学习
星幻元宇VR2 小时前
VR大空间:沉浸式数字体验引领新时代科普与教育升级
科技·学习·安全·vr·虚拟现实
zhonghaoxincekj2 小时前
轴距可调式元器件双边无损成形钳
经验分享·科技·深度学习·学习·测试工具·创业创新·制造
爱喝水的鱼丶3 小时前
SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程(四篇连载) 第三篇:ADT常用开发插件与个性化配置教程
数据库·学习·sap·abap
GHL2842710904 小时前
python通过API调用Coze智能体学习
学习·ai