【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 });
}
相关推荐
Hello_Embed24 分钟前
FreeRTOS 入门(四):堆的核心原理
数据结构·笔记·学习·链表·freertos·
先生沉默先29 分钟前
NodeJs 学习日志(8):雪花算法生成唯一 ID
javascript·学习·node.js
作孽就得先起床1 小时前
unity UnauthorizedAccessException: 拒绝访问路径
unity·游戏引擎
T***u3332 小时前
后端缓存技术学习,Redis实战案例
redis·学习·缓存
Gorgous—l2 小时前
数据结构算法学习:LeetCode热题100-图论篇(岛屿数量、腐烂的橘子、课程表、实现 Trie (前缀树))
数据结构·学习·算法
im_AMBER3 小时前
算法笔记 13 BFS | 图
笔记·学习·算法·广度优先
烤麻辣烫3 小时前
黑马程序员苍穹外卖(新手) DAY3
java·开发语言·spring boot·学习·intellij-idea
驯狼小羊羔3 小时前
学习随笔-hooks和mixins
前端·javascript·vue.js·学习·hooks·mixins
tealcwu3 小时前
【Unity踩坑】Unity项目提示文件合并有冲突
elasticsearch·unity·游戏引擎
组合缺一3 小时前
Solon AI 开发学习 - 1导引
java·人工智能·学习·ai·openai·solon