Unity DOTS1.0 入门(3) System与SystemGroup 概述

System与SystemGroup 概述

System

  1. System是提供一种代码逻辑,改变组件的数据状态,从一个状态到另外一个状态
  2. System在main thread里面运行, system.Update方法每一帧执行一次(其他线程中运行的就是JobSystem的事情了)
  3. System是通过一个System Group这个体系来决定它调用的顺序
  4. 可以定义托管或者非托管的System
    1.定义托管方式:用Class继承SystemBase
    2.定义非托管方式:用Struct继承ISystem
  5. 两种方式都可以重写3个方法:
    OnUpdate, OnCreate, OnDestroy
  6. 一个System只能处理本身所处世界的Entity,并且可以通过World属性获得所处的世界
  7. 默认情况下,启动的时候会为每个system与SystemGroup 创建一个实例出来;并且会创建3个默认SystemGroup:
    • lnitializationSystemGroup:
    • SimulationSystemGroup:
    • PresentationSystemGroup:
      默认情况下,用户创建出来的System实例,会放到SimulationSystemGroup这个分组下。 你也能够使用[UpdatelnGroup]来制定某个System放到哪个分组
  8. 可以使用的System类型有:
    • SystemBase: 为被托管system提供基类.(class 使用)
    • ISystem: 为非托管system提供可继承接口(struct 使用).
    • EntityCommandBufferSystem: 为其他system提供实体命令缓冲区实例(entity command buffer instances). 这允许你将结构性变化分组在一起,以提高应用程序的性能.
    • ComponentSystemGroup: 为system提供嵌套的组织和update的顺序.

System Group

  1. 包含System或者子System Group
  2. 也有Update,可以被重写
  3. 可以定制它孩子的update调用顺序

System Window

  • 这个窗口可以查看每个World中Systems update的调用顺序
    在这里插入图片描述
  • 图标类型说明如下:
    在这里插入图片描述
  • 第一个表示:system group
  • 第二个表示:system
  • 第三个表示:会在SystemGroup最开始时执行的一个entity command buffer system
  • 第四个表示:在一个system group里最后执行的entity command buffer system

System示例代码

创建GameSystem.cs脚本

//必须添加partial关键字 不然会报错,这是因为Unity在编译时会自动生成这个类的其他代码
public partial class GameSystem : SystemBase
{

    protected override void OnUpdate()
    {
        
    }
    
    protected override void OnCreate()
    {
        base.OnCreate();
    }
    
    protected override void OnDestroy()
    {
        base.OnDestroy();
    }
}

运行后在Simulation System Group 下就能看到,这是Unity通过SystemBase类的注解(attribute)创建出来的
在这里插入图片描述

update中代码示例:查询场景中所有的ComponentData组件的rotSpeed和LocalTransform

protected override void OnUpdate()
    {
        //查询ComponentData 的LocalTransform
        
        //遍历系统中所有的ComponentData 和 LocalTransform
        //SystemAPI.Query 会在编译时生成EntityQuery代码,并且缓存查询的类型,然后用计数器迭代缓存的Query数据并替换掉 SystemAPI.Query<T> 
        foreach (var (r, t) in SystemAPI.Query<RefRW<ComponentData>, RefRO<LocalTransform>>())
        {
            //RefRW<ComponentData> r 代表可读写的ComponentData
            //RefRO<LocalTransform> t 代表只读的LocalTransform
            //ValueRW 和 ValueRO 是对应的引用. RW 代表可读写,RO 代表只读
            float rotSpeed = r.ValueRO.rotSpeed;
            Vector3 position = t.ValueRO.Position;
        }
    }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计算机毕业设计】企业销售人员培训——后附源码

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…

《积极情绪的力量》 - 三余书屋 3ysw.net

积极情绪的力量 大家好&#xff0c;今天我们解读的这本书名为《积极情绪的力量》。在情绪的世界里&#xff0c;我们可以分为积极和消极两类&#xff0c;但让人留下深刻印象的是&#xff0c;许多人更容易体验到消极情绪&#xff0c;如抑郁、恐惧、焦虑、挫败和烦躁等。这并非令…

【JavaSE进阶】00-基础语法(13-14章) 01-面向对象 02-数组 03-常用类 04-异常处理

13 第十三章 方法覆盖和多态(Polymorphism)★★★★★ 13.1 章节目标与知识框架 13.1.1 章节目标 理解在什么情况下我们需要进行方法覆盖&#xff1f;掌握在满足什么条件的时候构成方法覆盖&#xff1f;什么是多态&#xff0c;代码怎么写&#xff1f;向上转型和向下转型都是…

谷歌推出全新AI代码辅助工具Code Assist,挑战GitHub Copilot|TodayAI

在其Cloud Next大会上&#xff0c;谷歌推出了一款名为Code Assist的AI驱动代码完成工具。该工具原名为Duet AI&#xff0c;现增强了功能并与流行的编辑器兼容。 Code Assist不仅与GitHub的Copilot Enterprise直接竞争&#xff0c;还以百万级的token上下文窗口自豪&#xff0c;…

Vue3.4 中自定义组件 v-model 双向数据绑定

父组件如下: 虽然下面userName没有使用 v-model.userName"userName"的写法,它默认与子组件中 defineModel();中不指定参数的变量对应, 只能有一个不指定名称,否则会报如下错 <template><div>{{ userName}}- {{ age}}- {{ sex }}<!-- 自定义子组件 Per…

【Linux 学习】进程优先级和命令行参数!

1. 什么是优先级? 指定进程获取某种资源&#xff08;CPU&#xff09;的先后顺序&#xff1b; Linux 中优先级数字越小&#xff0c;优先级越高&#xff1b; 1.1 优先级和权限的区别&#xff1f; 权限 &#xff1a; 能不能做 优先级&#xff1a; 已经能了&#xff0c;但是获…

网页input框自动填充问题

autocomplete 大部分查询解决办法是设置&#xff0c;autocompleteoff&#xff0c;关于autocomplete的含义&#xff0c;官网参考如下: HTML attribute: autocomplete - HTML: HyperText Markup Language | MDN 在 autocomplete 的文档中说明了 value 为 off 时&#xff0c;浏览…

【Canvas与艺术】绘制黄色三角生化危险标志

【关键点】 系统函数arcTo函数的用法及自编函数createRegTriArr的灵活运用。 【成果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head>&…

ZooKeeper分布式服务与Kafka消息队列+ELKF整合方案

前言 ZooKeeper 是一个分布式的、开放源码的分布式应用程序协调服务&#xff0c;提供配置维护、命名服务、分布式同步、组服务等功能&#xff1b; Kafka 是一个开源的分布式流处理平台&#xff0c;它被设计用来处理实时数据流&#xff0c;包括发布和订阅消息系统、日志收集以…

napi系列学习进阶篇——NAPI生命周期

什么是NAPI的生命周期 我们都知道&#xff0c;程序的生命周期是指程序从启动&#xff0c;运行到最后的结束的整个过程。生命周期的管理自然是指控制程序的启动&#xff0c;调用以及结束的方法。 而NAPI中的生命周期又是怎样的呢&#xff1f;如下图所示&#xff1a; 从图上我们…

WordPress 图片压缩插件:Compress JPEG PNG images 使用方法

插件介绍 Compress JPEG & PNG images是一款非常好用的图片压缩插件:&#xff0c;非常值得大家安装使用&#xff1b;特别是图片类型网站。其实我们很多服务器磁盘空间是不在乎多那么几十 MB 大小的&#xff0c;但是压缩了图片能提升网站速度&#xff0c;节省宽带&#xff…

入门:多层感知器Multiple-Layer Perceiver, MLP

本文将简单介绍多层感知器&#xff08;MLP&#xff09;的基本概念、原理和应用。MLP是一种前馈人工神经网络&#xff0c;由多层节点组成&#xff0c;每层节点通过权重和偏置与下一层节点相连。MLP在许多领域都有广泛的应用&#xff0c;如分类、回归、自然语言处理等。 本文将分…

软考数据库---2.SQL语言

主要记忆&#xff1a;表、索引、视图操作语句&#xff1b;数据操作&#xff1b;通配符、转义符&#xff1b;授权&#xff1b;存储过程&#xff1b;触发器 这部分等等整理一下: “”" 1、 数据定义语言。 SQL DDL提供定义关系模式和视图、 删除关系和视图、 修改关系模式的…

基于ssm的大学生租房平台的设计与实现(java源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的大学生租房平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 大学生租房平台的设计与实现的主…

Python数据分析可视化之Pandas的使用

一、项目介绍 数据获取与存储&#xff1a;能够使用Python财经数据接口包tushare下载股票交易数据&#xff0c;并将数据保存到CSV文件或MySQL数据库中。数据处理&#xff1a;能够用Pandas从CSV文件、Excel文件以及MySQL数据库中读取数据。能够使用Pandas对数据进行简单处理和深…

某狗网歌曲接口逆向之加密算法刨析

逆向网址 aHR0cHM6Ly93d3cua3Vnb3UuY29t 逆向链接 aHR0cHM6Ly93d3cua3Vnb3UuY29tL21peHNvbmcvN2dxcGVzNjguaHRtbA 逆向接口 aHR0cHM6Ly93d3dhcGkua3Vnb3UuY29tL3BsYXkvc29uZ2luZm8 逆向过程 请求方式&#xff1a;GET 逆向参数 signature:1898d8f157837fadc9751fdacf1398f9 …

天猫精灵要会员,不能听歌,还能用来干什么呢?榨干它的剩余价值

目录 起因&#xff1a;以听歌为主要功能的设备&#xff0c;却不能听歌了 1.蓝牙音箱 2.控制智能家电 3.万能遥控器&#xff0c;需要一个外接设备 4.倒计时/提醒&#xff0c;闹钟提醒&#xff0c;整点提醒&#xff08;这功能有人不喜欢&#xff0c;闲吵&#xff0c;还不能关…

职场证件照:不只是一张照片那么简单,这些细节请注意

随着毕业季的到来&#xff0c;许多应届生已经开始在各自的岗位上实习&#xff0c;准备迎接转正的挑战。在这个过程中&#xff0c;一张得体的职场证件照将成为你职业生涯中的一张重要名片。在职场中&#xff0c;证件照的应用场景多种多样&#xff0c;从窗口岗位的公示到工作牌上…

Pytorch Windows EOFError: Ran out of input when num_workers>0

关于深度学习的一些学习框架,我使用过pytorch,caffe,caffe2,openchatkit,oneflow等,最近我将长达几十万字的报错手册重新进行了整理,制作出一个新的专栏,主要记录这几种常见的开发框架在安装和使用过程中常见的报错,以及我是如何解决掉的,以此来帮助更多的深度学习开…

紫光展锐T610平台_4G安卓核心板方案定制开发

紫光展锐T610核心板配备Android 11操作系统&#xff0c;采用12nm制程工艺。该处理器CPU由2颗基于Cortex-A75架构的大核心和6颗基于Cortex-A55架构的小核心组成&#xff0c;最高主频为1.8GHz。GPU采用的是614.4MHz的Mali G52&#xff0c;可以流畅播放2400*1080分辨率视频&#x…