【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 });
}
相关推荐
好奇龙猫3 小时前
【人工智能学习-AI入试相关题目练习-第七次】
人工智能·学习
jacGJ6 小时前
记录学习--文件读写
java·前端·学习
枷锁—sha7 小时前
【PortSwigger Academy】SQL 注入绕过登录 (Login Bypass)
数据库·sql·学习·安全·网络安全
魔芋红茶7 小时前
Spring Security 学习笔记 2:架构
笔记·学习·spring
Longyugxq8 小时前
Untiy的Webgl端网页端视频播放,又不想直接mp4格式等格式的。
unity·音视频·webgl
avi911110 小时前
Unity毛玻璃渲染模糊渲染Shader数学入门
unity·aigc·图形学·shader·hlsl
科技林总10 小时前
【系统分析师】4.6 构件与中间件
学习
23124_8010 小时前
CTFshow学习记录
学习
星火开发设计10 小时前
C++ 函数定义与调用:程序模块化的第一步
java·开发语言·c++·学习·函数·知识
嗯嗯=11 小时前
STM32单片机学习篇3
stm32·单片机·学习