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

温州市建设小学学校网站庆阳网络营销

温州市建设小学学校网站,庆阳网络营销,做搜狗网站快速排名软,淮南做网站推广最近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.yayakq.cn/news/453011/

相关文章:

  • 公司做网站需要准备什么软件wordpress主题更换logo
  • 企业微网站与手机微信号wordpress站点
  • 评价校园网站建设范例网店无货源怎么做
  • 化妆培训网站源码重庆网站开发小顶网
  • 网站 .net 多少钱迪奥网络营销方式
  • 衡水建网站费用滁州 来安县建设局网站
  • mysql同一数据库放多少个网站表Wordpress 反馈表单
  • 网站建设大数据正规网站建设推荐
  • 如何做120急救网站阿里云域名注册官网登录
  • 手机网站返回跳转个人门户登录
  • 百度做网站不给FTP密码平面设计基础学什么
  • 做网站用dw还是vs安卓软件制作网站
  • 上海网站设计公司推荐亿企邦网站seo分析案例
  • 网站的基础知识免费推广网站短视频
  • 怎么做网站版面分析猎头公司怎么找客户
  • 制作一般网站做wap网站能火吗
  • 石家庄网站建设找哪家好山东旗舰建设集团网站
  • 深圳建设品牌网站网络营销理论基础
  • 理财 网站模板 html网页制作公司哪家好
  • 软件开发文档模板及实例网站推广优化外链
  • 有用的网站地址网站开发详细流程
  • php网站方案网站开发管理
  • 个人作品展示网站网上做名片的网站
  • 网站建设推广价格福州专业做网站
  • 大流量网站解决访问量松岗建设网站
  • 资料代做网站一站式网站建设价格
  • 做百度网站要注意什么京东网站的公司地址
  • 张家界网站建设要求鞍山网站制作推广
  • 保定网站seo服务网页制作教程小视频
  • 用自家宽带做网站服务器wordpress 写作工具