【Dots之003】SystemAPI.Query相关基础笔记

news2024/11/27 20:24:57

1、SystemAPI.Query

SystemAPI.Query只能作为foreach中in的的子句

SystemAPI.Query<RefRO<LocalTransform>>().WithAll<Obstacle>()

解析:对于每个具有LocalTransformObstacleEntity;都会将LocalTransform只读引用返回给查询结果

SystemAPI.Query<RefRW<LocalTransform>, RefRW<Velocity>>().WithAll<Ball>()

解析:查询具有LocalTransform,Velocity,Ball组件的Entity,将LocalTransform和Velocity的可读写引用返回,用于可读可修改

2、LocalTransform

不设置默认的Scale和Rotation属性

state.EntityManager.SetComponentData(player, new LocalTransform());

在这里插入图片描述
可以看到默认都是设置为0;

设置的默认属性以后:

 state.EntityManager.SetComponentData(player, new LocalTransform
 {
       Position = new float3
       {
           x = obstacleTransform.ValueRO.Position.x + config.PlayerOffset,
           y = 1,
           z = obstacleTransform.ValueRO.Position.z + config.PlayerOffset
       },
       Scale = 1, // If we didn't set Scale and Rotation, they would default to zero (which is bad!)
       Rotation = quaternion.identity
   });

给Entity添加LocalTransform需要设置默认的ScaleRotation;上面的代码中没有设置,得到的结果会如下:
在这里插入图片描述
现在就是正常的状态了;

3、Unity.Mathematics.Random

首先根据情况决定是否需要设置一个随机种子;然后在进行调用;

var rand = new Random(123);
//随机一个值
float random_one = rand.NextFloat(0, 100);
//随机一个2为向量
float2 random_v2 = rand.NextFloat2(new float2(0, 0), new float2(100, 100));
//随机一个方向
random_v2 = rand.NextFloat2Direction();

4、EntityQuery

获取或者创建与查询描述匹配的EntiyQuery
如果System中没有匹配的EntityQuery,那么就Create一个;如果有就直接Get

//描述同时具有Obstacle和LocalTransform组件的EntityQuery
var obstacleQuery = SystemAPI.QueryBuilder().WithAll<LocalTransform, Obstacle>().Build();

5、IEnableableComponent

组件继承IEnableableComponent,可以起到开启和关闭组件的作用;而不需要把该组件从Entity上面移除;
1、启用组件:SetComponentEnabled(entity,true);
2、关闭组件:SetComponentEnabled(entity,false);

 public override void Bake(PlayerAuthoring authoring)
 {
       var entity = GetEntity(TransformUsageFlags.Dynamic);

       AddComponent<Player>(entity);  
       AddComponent<Carry>(entity);
       //设置是否启用ComponentData
       SetComponentEnabled<Carry>(entity, false);
       
 }
 
public struct Carry : IComponentData, IEnableableComponent{}

3、如果通过IJobEntity的方式来处理组件的启用与否,可以参考下面的这种方式:

 	[WithAll(typeof(Turret))]
    [WithOptions(EntityQueryOptions.IgnoreComponentEnabledState)]
    [BurstCompile]
    public partial struct SafeZoneJob : IJobEntity
    {
        public float SquaredRadius;

        // Because we want the global position of a child entity, we read LocalToWorld instead of LocalTransform.
        void Execute(in LocalToWorld transformMatrix, EnabledRefRW<Carry> shootingState)
        {
            //组件的启用状态
            shootingState.ValueRW = math.lengthsq(transformMatrix.Position) > SquaredRadius;
        }
    }

EnabledRefRW后面的类型必须要继承IEnableableComponent

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

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

相关文章

VBA:对Excel单元格进行合并操作

Sub hb()Dim nn 3For i 3 To 18If Range("b" & i) <> Range("b" & i 1) ThenRange("b" & n & ":b" & i).Mergen i 1End IfNextEnd Sub

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI 高校汉服租赁网站的 设计与实现

一.项目介绍 高校汉服租赁网站分为普通用户以及管理员两类 普通用户&#xff1a; 注册、登录系统、查看汉服首页发帖公告信息、 交流论坛&#xff08;发帖、查看帖子、评论&#xff09;、 公告咨询&#xff08;查看公告以及评论&#xff09;、 汉服信息&#xff08;查…

UNIX网络编程卷一 学习笔记 第二十九章 数据链路访问

目前大多操作系统都为程序提供访问数据链路层的功能&#xff0c;此功能可提供以下能力&#xff1a; 1.能监视由数据链路层接收的分组&#xff0c;使得tcpdump之类的程序能运行&#xff0c;而无需专门的硬件设备来监视分组。如果结合使用网络接口进入混杂模式&#xff08;promis…

Mac 安装php多版本,brew安装php8.0

因为需要我要在mac上装两个php版本&#xff0c;先前我已经装过php7.4,下面我们逐步安装php8.0 开始安装8.0&#xff1a; 直接运行安装 brew install php8.0 遇到问题怀疑是仓库太老了&#xff0c;更新一下homebrew ,重新安装 brew update 安装成功了,不过看了下版本好像不能正…

海关发布限制日本水产品进口,占据我国进口多少?

在福岛发生核电站事故后&#xff0c;我国就已经暂停进口包括福岛、宫城和长野等在内的10个县的所有食品&#xff0c;以及10个县以外的蔬菜等。而在日本宣布排放核污水并且已经实施之后&#xff0c;海关在24日发布全面暂停进口原产地为日本的水产品&#xff08;含食用水生动物&a…

安装启动Stable Diffusion教程

一、下载源码 GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI 二、安装miniconda 参考&#xff1a;安装启动yolo5教程_苍穹之跃的博客-CSDN博客 三、安装CUDA 参考&#xff1a;安装启动yolo5教程_苍穹之跃的博客-CSDN博客 四、创建虚拟环境 co…

前端三剑客中简单的两个:HTMLCSS

HTML&CSS 1&#xff0c;HTML1.1 介绍1.2 快速入门1.3 基础标签1.3.1 标题标签1.3.2 hr标签1.3.3 字体标签 1.4 图片、音频、视频标签1.5 超链接标签1.6 列表标签1.7 表格标签1.8 布局标签1.9 表单标签1.9.1 表单标签概述1.9.2 form标签属性1.9.3 代码演示 1.10 表单项标签 …

XmlDocument.SelectNodes 不起作用

今天采用Xpath读取Xml节点&#xff0c;怎么都读不出。 问题分析&#xff1a; 错误代码如下&#xff1a; XmlDocument xmlD new XmlDocument();xmlD.PreserveWhitespace true;xmlD.LoadXml(xStr);xmlD.SelectNodes("job-scheduling-data/schedule/job");经排查 do…

SSD的基础知识介绍

固态硬盘&#xff0c;英文名Solid State Disk或Solid State Drive&#xff0c;是一种以存储器作为永久性存储器的电脑存储设备。虽然SSD已不是使用“碟盘”来记存数据&#xff0c;也没有用于“驱动”的马达&#xff0c;但是人们依照命名习惯&#xff0c;仍然称为固态硬盘或固态…

前端list列表自定义图标并设置大小

前端list列表自定义图标并设置大小 一、前端list列表基础知识回顾 前端公有两种列表&#xff0c;一种是有序列表&#xff08;ol&#xff09;&#xff0c;一种是无序列表&#xff08;ul&#xff09;&#xff0c;它们的子元素都是&#xff08;li&#xff09;。 1.1 有序列表&a…

pdf转换成图片转换器在线怎么转?pdf转换成图片具体方法介绍

很多用户们都是比较喜欢使用pdf文档的&#xff0c;由于这种文件格式的便携性非常高&#xff0c;所以广泛的应用于工作和学习领域&#xff0c;再加上pdf文档可以随意转换成为其他的文件格式&#xff0c;更是让pdf文档受到了更多用户们的欢迎&#xff0c;那么pdf转换成图片转换器…

31 - 个人博客项目-02-定义模型

前提: settings.py已经连接数据库 两张表想要互相调用 必须定义主外键约束,外键定义在多的一方 (1). 新建 apps / user / models.py 创建用户相关模型类 from datetime import datetime from ext import dbclass User(db.Model):# 用户表id db.Column(db.Integer, primary…

hadoop学习:mapreduce入门案例四:partitioner 和 combiner

先简单介绍一下partitioner 和 combiner Partitioner类 用于在Map端对key进行分区 默认使用的是HashPartitioner 获取key的哈希值使用key的哈希值对Reduce任务数求模决定每条记录应该送到哪个Reducer处理自定义Partitioner 继承抽象类Partitioner&#xff0c;重写getPartiti…

Web网站服务器

目录 一、什么是Apache? 二、虚拟目录是什么&#xff1f; 三、Apcahe相关配置文件 四、httpd.conf主配置文件的常用配置参数 五、Web网站配置案例 5.1搭建基于用户的个人主页网站 5.2、配置虚拟目录 5.3、配置虚拟主机 5.3.1搭建两个基于IP地址的虚拟主机 5.3.2搭建两个基于域…

发布自己的npm包

1.初始化npm包 npm init 输入npm init后&#xff0c;一路默认即可初始化成功&#xff0c;如下&#xff1a; 初始化成功后会生成一个package.json文件 n&#xff08;以我的文件夹demo-npm-dir为例&#xff09; package.json配置如下&#xff1a; {"name": "n…

基于Java+SpringBoot+Vue前后端分离客户关系管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建卷II

2023年全国职业院校技能大赛 GZ073网络系统管理赛项 模块A&#xff1a;网络构建 卷II 目 录 任务清单 &#xff08;一&#xff09;基础配置 &#xff08;二&#xff09;有线网络配置 &#xff08;三&#xff09;无线网络配置 &#xff08;四&#xff09;出口网络配置 &am…

商城二维码系统_二维码生成系统源码与设计_OctShop

OctShop开源商城系统自带了二维码生成系统&#xff0c;商城所有系统要使用二维码的地方都是统一由此二维码生成系统生成的。其中包括&#xff1a;店铺收款二维码&#xff08;H5/小程序&#xff09;、店铺二维码&#xff08;H5/小程序&#xff09;、订单核销二维码、优惠券线下核…

【高性能计算】opencl语法及相关概念(二):索引,队列,核函数

目录 数据并行及任务并行异构编程语言的共性opencl的划分方式opencl上下文定义以字符串为主的程序对象同一设备&#xff0c;多个命令队列同时执行多个核函数的示例 数据并行及任务并行 数据并行是将大规模的计算任务划分为多个子任务&#xff0c;并将这些子任务同时应用于不同…

十二、外观模式

一、什么是外观模式 外观&#xff08;Facade&#xff09;模式又叫作门面模式&#xff0c;是一种通过为多个复杂的子系统提供一个一致的接口&#xff0c;而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口&#xff0c;外部应用程序不用关心内部子系统的具体细节&am…