当前位置: 首页 > news >正文

中国最新新闻头条成都谷歌seo

中国最新新闻头条,成都谷歌seo,做公司集团网站,医院门户网站建设规划最近DOTS发布了正式的版本, 我们来分享一下System中如何基于SystemAPI.Query来迭代World中的数据,方便大家上手学习掌握Unity DOTS开发。 SystemAPI.Query的使用 System有两种,一种是Unmanaged 的ISystem,一种是managed 的SystemBase,这两种System都可…

最近DOTS发布了正式的版本, 我们来分享一下System中如何基于SystemAPI.Query来迭代World中的数据,方便大家上手学习掌握Unity DOTS开发。

SystemAPI.Query的使用

System有两种,一种是Unmanaged 的ISystem,一种是managed 的SystemBase,这两种System都可以通过SystemAPI.Query来迭代与遍历,可以获取World里面的组件与Entity。SystemAPI.Query是运行在main thread的主线程上,SystemAPI.Query与C# 传统的foreach语句结合起来,让我们遍历数据非常的方便。当我们要遍历一个World里面的entity数据的时候,我们需要根据数据类型来筛选出对应的组件与Entity。函数SystemAPI.Query<T1,T2…>(),其中t1, t2就是我们需要的component data的类型,查询的时候,会遍历World 里面有这些组件的Entity,获取组件的引用。Query中的类型T1,T2,可以是以下7中类型:

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。

IAspect
IComponentData
ISharedComponentData
DynamicBuffer<T>
RefRO<T>
RefRW<T>
EnabledRefRO<T> where T : IEnableableComponent, IComponentData
EnabledRefRW<T> where T : IEnableableComponent, IComponentData

以下是给的一个代码示例,从World里面筛选出来有LocalTransform与RotationSpeed组件的Entity,并把它们的数据通过foreach来处理。示例代码如下:

 public partial struct MyRotationSpeedSystem : ISystem{[BurstCompile]public void OnUpdate(ref SystemState state){float deltaTime = SystemAPI.Time.DeltaTime;foreach (var (transform, speed) in SystemAPI.Query<RefRW<LocalTransform>, RefRO<RotationSpeed>>())transform.ValueRW = transform.ValueRO.RotateY(speed.ValueRO.RadiansPerSecond * deltaTime);}}
RefRW<T>.ValueRW获取组件的可读写权限的组件引用, RefRW<T>.ValueRO只读属性的组件应用, RefRO<T>.ValueRO组件的只读引用。如果你只要一个只读之间,我们就可以单纯的用组件的名字来Query就可以了。public void OnUpdate(ref SystemState state){#region query-data-altfloat deltaTime = SystemAPI.Time.DeltaTime;foreach (var (transform, speed) in SystemAPI.Query<RefRW<LocalTransform>, RotationSpeed>())transform.ValueRW = transform.ValueRO.RotateY(speed.RadiansPerSecond * deltaTime);#endregion}

其中RotaionSpeed为只读的组件实例的引用。如果我们在system里面迭代数据的时候,需要组件对应的Entity,我们使用API函数WithEntityAcess,示例代码如下:

 public void OnUpdate(ref SystemState state){float deltaTime = SystemAPI.Time.DeltaTime;#region entity-accessforeach (var (transform, speed, entity) in SystemAPI.Query<RefRW<LocalToWorld>, RefRO<RotationSpeed>>().WithEntityAccess()){// Do stuff;}#endregion}

SystemAPI.Query的内部实现

当我们在System代码里面调用foreach+SystemAPI.Query的时候,我们的自动代码生成器会根据Query调用的时候传递的参数的类型来生成EntityQuery字段到当前的System类里面(正因如此,我们在定义一个System类型的时候都要加partial)。同时替换掉SystemAPI.Query代码。这样运行的时候使用EntityQuery字段来帮我们找到对应的组件来进行迭代处理。SystemAPI.Query也有它的一些局限性,使用SystemAPI.Query API的时候我们无法对Dynamic Buffer组件来做只读的访问权限,只能获得可读写的访问权限。我们不能够保存foreach的结果,因为foreach是自动代码生成的时候,根据foreach在编译的时候自动生成的EntityQuery,没有办法去缓存EntityQuery的结果。

今天的 SystemAPI.Query如何使用,就到这里了,更多的DOTS系列,关注我们,持续更新!

http://www.15wanjia.com/news/39562.html

相关文章:

  • 芜湖做网站找哪家好百度seo不正当竞争秒收
  • 豆各庄做网站的公司学电商运营的培训机构
  • 怎么进入网络管理系统seo公司赚钱吗
  • 爬虫 wordpress太原网站优化公司
  • 西安网易网站建设长尾关键词挖掘
  • 静态网站可以做哪些seo长沙
  • 沈阳单页网站制作win7优化大师官方免费下载
  • 方寸网站建设seo外链建设的方法有
  • 企业门户网站开发平台的设计必应搜索引擎怎么样
  • 使用vs2015做网站教程企业推广网
  • 广州建委科技委网站首页网上售卖平台有哪些
  • 手机网站免费制作推销产品的万能句子
  • 深圳网站空间购买百度关键词seo公司
  • 嘉定网站建设电脑培训河南郑州网站顾问
  • 个人做什么类型网站广告营销公司
  • 手机网站建设原则seo关键词工具
  • 国内的有什么好wordpress主题苏州seo排名优化课程
  • php网站建设难点江苏网页设计
  • 给个网站谢谢各位了品牌整合营销
  • 校园门户网站设计论文seo 百度网盘
  • 从化电子商务网站建设怎么在百度上发表文章
  • 政府网站建设方案链接购买
  • 利用国外网站文章图片做书营利女教师遭网课入侵视频大全播放
  • 济南住建局官方网站网络优化行业的发展前景
  • 品牌网站制作公司北京建站优化
  • 苏州的网站建设公司推广赚钱的软件
  • 设计网站的意义企业建站平台
  • 软件网站是怎么做的国内免费域名注册
  • 中国网站建设世界排名google建站推广
  • 四川做网站公司网站一般需要怎么推广