【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 });
}
相关推荐
cape_NO_71 分钟前
运动控制卡--概述学习
学习·自动化
飞向星河1 小时前
SV学习笔记——数组、队列
笔记·学习·c#
胡西风_foxww1 小时前
中学学习难点管理思维魔方
学习·中学·难点
末零2 小时前
Unity 取色板
unity·游戏引擎
无敌最俊朗@2 小时前
Unity大型游戏开发全流程指南
unity·游戏引擎
Moonnnn.2 小时前
51单片机——程序执行过程(手工汇编)
汇编·笔记·嵌入式硬件·学习·51单片机
虾米神探2 小时前
Unity InputField + ScrollRect实现微信聊天输入框功能
unity·游戏引擎
大宝剑1703 小时前
blender学习25.3.8
学习·blender
咩咩觉主4 小时前
C# &Unity 唐老狮 No.7 模拟面试题
开发语言·unity·c#
咩咩觉主4 小时前
Unity网络开发基础 (2) 网络协议基础
网络·unity·c#