EntitiesSample_7. EnableableComponents

该示例只要表达的是关闭和激活组件,之前的示例我们知道对于一个ECS组件需要继承IComponent接口,说明这个是一个组件,数组的话需要继承IBufferElementData接口,说明这个是一个数组元组组件,如果需要组件的激活控制,结构体需要继承IEnableableComponent

1.早baker的时候使用这个api设置组件的状态 SetComponentEnabled,这个是baker类中的一个api

public void SetComponentEnabled<T>(Entity entity, bool enabled) where T : struct, IEnableableComponent{if (_State.PrimaryEntity != entity){CheckValidAdditionalEntity(entity);}else{CheckComponentHasBeenAddedByThisBaker(entity, TypeManager.GetTypeIndex<T>());}_State.Ecb.SetComponentEnabled<T>(entity, enabled);}

可以看到源码中使用的是ecb设置的组件状态

示例中的代码是设置组件的读写状态,来改变旋转的效果

if (timer < 0){//EntityQueryOptions.IgnoreComponentEnabledState,这个查询忽略组件的状态,不管组件是激活还是不激活都会被找到foreach (EnabledRefRW<RotationSpeed> rotationSpeedEnabled inSystemAPI.Query<EnabledRefRW<RotationSpeed>>().WithOptions(EntityQueryOptions.IgnoreComponentEnabledState)){//设置组件的读写状态,只读状态和组件的状态有关,组件不激活状态只读的值应该是false激活状态值应该是truerotationSpeedEnabled.ValueRW = !rotationSpeedEnabled.ValueRO;}timer = interval;}// The query only matches entities whose RotationSpeed is enabled.foreach (var (transform, speed) inSystemAPI.Query<RefRW<LocalTransform>, RefRO<RotationSpeed>>()){transform.ValueRW = transform.ValueRO.RotateY(speed.ValueRO.RadiansPerSecond * deltaTime);}

容易忽略的点是EntityQueryOptions.IgnoreComponentEnabledState,这个查询选项忽略组件的状态,都可以查询到,就像的Mono中,物体不激活,GameObject.Find是查询不到的

读写引用的值的设置源码是:

 public bool ValueRO => m_Ptr.GetBit();public unsafe bool ValueRW{get{return m_Ptr.GetBit();}set{bool bit = m_Ptr.GetBit();m_Ptr.SetBit(value);if (Hint.Likely(bit != value)){int value2 = math.select(1, -1, value);Interlocked.Add(ref UnsafeUtility.AsRef<int>(m_PtrChunkDisabledCount), value2);}}}

ValueRW的值和ValueRO的值有很大的关系也就是说,在修改组件的数据的时候,要看这个组件只读(RO)状态是不是true

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/24970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

How to: Add and Customize the Ribbon Skin List and Skin Gallery

皮肤列表和皮肤库允许用户选择皮肤。本文介绍如何在功能区中显示“皮肤列表”或“皮肤库”并对其进行自定义。 DevExpress演示中心中的大多数应用程序都允许您选择皮肤。例如&#xff0c;运行XtraGrid演示并导航到皮肤功能区页面以更改当前皮肤。 在功能区UI中显示皮肤列表或…

谁能赢?阿里的通义 VS 百度的文心

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 国产AI大模型领域&#xff0c;当前有两大阵营&#xff1a; (1)以百度文心一言为代表的闭源大模型。李彦宏曾说过&#xff1a;AI大模型开源意义不大&#xff0c;百度绝不抢开发者饭碗。 (2)以阿里通义AI为代表的开…

Python怎么配置环境变量:深度探索与实战指南

Python怎么配置环境变量&#xff1a;深度探索与实战指南 在Python编程的世界中&#xff0c;环境变量的配置是一个至关重要的步骤。它不仅影响着Python解释器的运行&#xff0c;还关系到各种第三方库和工具的使用。本文将带你深度探索如何配置Python的环境变量&#xff0c;并为…

猜排列 题解

推荐在 cnblogs 上阅读 猜排列 题解 差 eps 步想到正解。 题意描述 有 m m m 个长为 n n n 序列 a 1 , … , a n a_1,\dots,a_n a1​,…,an​&#xff0c;还有 m m m 个长为 n n n 序列 b 1 , … , b n b_1,\dots,b_n b1​,…,bn​。 其中 b i b_i bi​ 是由 a i …

ipc-test.bk and mmap is also similar.

1.config tab-4 vi /etc/virc或者 1.配置文件中如果要添加注释&#xff0c;不能用#&#xff0c;要使用” 2.u命令回退上次的操作 3.复制不带行号&#xff0c;在/etc/virc的末尾添加se mousea " add tab spaceset ts4 "只设置这个就能把tab缩进为4&#xff0c;加上…

Ubuntu24.04基本配置

目录 0. 前言1. 连接网络2. 更新源3. 安装并配置vim4. 设置用户sudo免密5. 同步双系统时间6. 设置终端颜色主题7. 设置中文输入法8. 调整Dock位置等9. 设置Grub10. 其它美化设置10.1 夜灯10.2 壁纸10.3 终端加强gnome-tweaks10.4 字体 11. 常用工具11.1 邮箱配置11.2 翻译工具1…

如何微调 Llama 3 进行序列分类?

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

图像滤波算法 python

1. 平均滤波 (Mean Filtering) 平均滤波是一种简单的线性滤波方法&#xff0c;通过取邻域内像素的平均值来平滑图像&#xff0c;从而去除噪声。 import cv2 import numpy as np# 读取图像 image cv2.imread(image.jpg)# 应用平均滤波 mean_filtered cv2.blur(image, (5, 5)…

极域卸载不干净导致无法重新安装问题:独家解决方案

文章目录 一、问题二、解决1.网上常规方法2.本贴特殊之处 三、致谢 一、问题 极域卸载不干净&#xff0c;导致无法重新安装。 二、解决 1.网上常规方法 1.regedit命令注册表删除 topdomain、mythware、{5FB4EEDF-6A79-45C3-B049-EF327CA03FCD} 2.删除极域对应tmp文件 网上…

迫在眉睫的革命:通用人工智能(AGI)与超级智能的竞赛

技术领域正处于一场将重新定义人类能力和理解边界的革命边缘。随着我们站在这一新时代的十字路口,开发通用人工智能(AGI)及其随后向超级智能的飞跃,不仅仅是一项科学努力,而是我们历史上的一个关键时刻。在这篇博客文章中,我们将深入探讨Leopold Aschenbrenner的文件《态…

Go微服务: 分布式之通过可靠消息实现最终一致性

通过可靠消息实现最终一致性 可靠消息&#xff0c;就是靠普消息&#xff0c;还是基于之前的这个案例 比如这个订单服务&#xff0c;无论你是先发送消息&#xff0c;还是先新建订单&#xff0c;它其实都是发送的不可靠消息就是说如果这个消息&#xff0c;像mysql事务那样&#…

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第七周) - 结构化预测

结构化预测 0. 写在大模型前面的话1. 词法分析 1.1. 分词1.2. 词性标注 2.2. 句法分析 2.3. 成分句法分析2.3. 依存句法分析 3. 序列标注 3.1. 使用分类器进行标注 4. 语义分析 0. 写在大模型前面的话 在介绍大语言模型之前&#xff0c;先把自然语言处理中遗漏的结构化预测补…

【机器学习】机器学习与医疗健康在智能诊疗中的融合应用与性能优化新探索

文章目录 引言机器学习与医疗健康的基本概念机器学习概述监督学习无监督学习强化学习 医疗健康概述疾病预测诊断辅助个性化治疗方案制定 机器学习与医疗健康的融合应用实时健康监测数据预处理特征工程 疾病预测与优化模型训练模型评估 诊断辅助与优化深度学习应用 个性化治疗方…

如何使用 Magisk 获取 Google Pixel 4 或 Pixel 4 XL 的 Root 权限

How to root the Google Pixel 4 or Pixel 4 XL with Magisk How to root the Google Pixel 4 or Pixel 4 XL with Magisk 给国内新用户的 Google Pixel 使用指南 - 少数派 12.0.0 (SP1A.211105.002, Nov 2021) https://developers.google.com/android/images#flame 小米…

接口自动化Requests+Pytest基础实现

目录 1. 数据库以及数据库操作1.1 概念1.2 分类1.3 作用 2 python操作数据库的相关实现2.1 背景2.2 相关实现 3. pymysql基础3.1 整个流程3.2 案例3.3 Pymysql工具类封装 4 事务4.1 案例4.2 事务概念4.3 事务特征 5. requests库5.1 概念5.2 角色定位5.3 安装5.4 校验5.5 reques…

C语言学习笔记 库文件

文章目录 概述生成静态库及应用生成动态库及应用 概述 在C语言中&#xff0c;库分为静态库(.a)和动态库(.dll或.so)。 调用静态库时&#xff0c;编译器会把库文件编译到可执行文件(.exe)里&#xff1b; 调用动态库时&#xff0c;编译器不会把库文件编译到可执行文件(.exe)里&a…

“中新美”三重身份,能帮SHEIN解决上市问题吗?

一家公司的海外上市之路能有多复杂&#xff1f;辗转多地的SHEIN&#xff0c;可能是当前最有话语权回答这个问题的公司。最近&#xff0c;它又有了新消息。 在上市信息多次更改后&#xff0c;伦敦正在成为SHEIN最有可能的“着陆”点。巴伦周刊援引英国天空新闻报道称&#xff0…

Python01 -分解整包数据到各个变量操作和生成器

Python 的星号表达式可以用来解决这个问题。比如&#xff0c;你在学习一门课程&#xff0c;在学期末的时候&#xff0c;你想统计下家庭作业的平均成绩&#xff0c;但是排除掉第一个和最后一个分数。如果只有四个分数&#xff0c;你可能就直接去简单的手动赋值&#xff0c;但如果…

5、搭建前端项目

5.1 使用vite vue搭建 win r 打开终端 切换到你想要搭建的盘 npm init vitelatest跟着以下步骤取名即可 cd fullStackBlognpm installnpm run dev默认在 http://localhost:5173/ 下启动了 5.2 用vscode打开项目并安装需要的插件 1、删除多余的 HelloWorld.vue 文件 2、安装…

【Vue3】理解toRef() 和 toRefs()

历史小剧场 知道可能面对的困难和痛苦&#xff0c;在死亡的恐惧中不断挣扎&#xff0c;却仍然能战胜自己&#xff0c;选择这条道路&#xff0c;这才是真正的勇气。----《明朝那些事儿》 前言 toRef 和 toRefs 是Vue3中的响应式转换工具函数 toRef: 不影响源对象的情况下&#x…