【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 });
}
相关推荐
代码游侠20 分钟前
应用——管道与文件描述符
linux·服务器·c语言·学习·算法
stars-he31 分钟前
FPGA学习笔记(6)逻辑设计小结与以太网发送前置
笔记·学习·fpga开发
老朱佩琪!1 小时前
Unity桥接模式
unity·设计模式·c#·桥接模式
熬了夜的程序员1 小时前
【Rust学习之路】第 0 章:理解 Rust 的核心哲学
开发语言·学习·rust
EniacCheng1 小时前
【RUST】学习笔记-环境搭建
笔记·学习·rust
d111111111d1 小时前
STM32编码电机闭环PID调节教程。
笔记·stm32·单片机·嵌入式硬件·学习·面试
陈言必行1 小时前
Unity 之 物理引擎中三种刚体力施加方式详解
unity·游戏引擎
冬夜戏雪1 小时前
【学习日记】【12.18】【整理了下论文相关的计划】
学习
其美杰布-富贵-李1 小时前
TSTabFusionTransformer 深度学习学习笔记
笔记·深度学习·学习
speop1 小时前
【datawhale组队学习】|TASK02|结构化输入
网络·人工智能·学习