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

怎么在windows做网站电脑培训网上免费课程

怎么在windows做网站,电脑培训网上免费课程,wordpress主题创建目录,如何做网站维护 找关键词最近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/11327.html

相关文章:

  • 免费学校网站系统网页设计怎么做
  • 做网站带阿里云服务器多少钱中国新闻
  • 公司有域名 如何做网站网站优化分析
  • 住房城市建设网站app营销
  • 免费无限建站网络推广搜索引擎
  • 宁波网站关键词优化公司郴州seo
  • html表格的完整代码郑州网站seo外包公司
  • 做网站是否需要自购服务器网站seo诊断工具
  • 做网站的电脑软件服务器ip域名解析
  • 网站备案抽查各大网站收录提交入口
  • 怎样把有用网站做图标放在桌面杭州网站优化效果
  • 石家庄专门做网站的公司网络舆情分析研判报告
  • 什么作为国内的主要门户网站企业网站设计素材
  • 个人网站主页怎么做网站推广平台
  • 欧 美 做 爱 视频网站腾讯广点通
  • 北京做网站好的百度指数在哪里看
  • 培训教育深圳谷歌seo公司
  • 网站如何制作学校的做竞价托管多少钱
  • 邢台网站建设信息广告点击一次多少钱
  • 电商专业就业前景搜外seo视频 网络营销免费视频课程
  • 佛山新网站制作特色百度seo最成功的优化
  • 私服网站备案自媒体怎么入门
  • 网上做打字任务的网站网络推广是指什么
  • 长沙英文网站建设公司网址查询网站
  • 网站建设毕业设计怎么做2021年新闻摘抄
  • 公司网站的建设哪家好2023近期舆情热点事件
  • 微小旅行社能否做网站运营推广公司
  • 深圳市外贸网站建设李守洪排名大师怎么样
  • 陕西网站建设的内容托管竞价推广公司
  • 网站建设 中企动力百度推广关键词排名规则