首页 > 其他分享 >Unity DOTS System与SystemGroup概述

Unity DOTS System与SystemGroup概述

时间:2023-12-01 10:12:52浏览次数:44  
标签:DOTS 创建 System Unity SystemGroup World

最近DOTS终于发布了正式的版本, 我们来分享以下DOTS里面System关键概念,方便大家上手学习掌握Unity DOTS开发。

System是迭代计算与处理World中的Entity实体的Component Data数据的逻辑代码。System对应的代码是运行在main thread上的。World里面所有的System通过SystemGroup来进行管理, 通过SystemGroup, 来决定了每个System的迭代顺序。

System分为托管对象与非托管对象两种模式, 定义托管对象System的时候,定义一个class, 继承自SystemBase, 定义非托管对象的时候,定义struct 继承自ISystem。

System有三个常用的接口,可以供用户重写,接口包含如下:

每个System只能迭代它所在的World中的Entity, 每个System在创建的时候会有一个数据成员World指向它所在的World,我们可以通过system实例.World来获取。

Unity运行的时候,默认会创建一个World, 并创建默认的SystemGroup,它们分别是:

同时会扫描当前所有的System类,为每个System类创建一个实例放到SystemGroup中,运行后该System就会被迭代计算到。默认创建的System,如果你没有指定分组,默认会创建到SimulationSystemGroup分组中,如果System需要创建到特定的分组,可以通过属性装饰器[UpdateInGroup]。

如果不想要系统默认创建,可以定义宏关闭掉:

UNITY_DISABLE_AUTOMATIC_SYSTEM_BOOTSTRAP

System有以下的一些类型,可以供开发者使用,类型如下:

SystemBase: 基于托管类的System;

ISystem: 基于非托管类的System;

EntityComponentBufferSystem: 为其它的System提供entity 命令缓冲区;

ComponentSystemGroup: 嵌套System的层级关系与Update的顺序;

每个SystemGroup可以包含System与子SystemGroup,可以通过重写SystemGroup的update来决定System的迭代顺序。可以通过System Window来查看当前系统的所有System与层级关系,如下图所示:

今天分分享到这里,关注我们,学习更多的最新Unity DOTS 进阶与实战相关的知识.

标签:DOTS,创建,System,Unity,SystemGroup,World
From: https://www.cnblogs.com/bycw/p/17869102.html

相关文章

  • Unity 最新DOTS系列之《Baking与Baker的详解》
    UnityDOTSBaking与Baker详解UnityDOTSBaking与Baker详解最近DOTS终于发布了正式的版本,我们来分享一下DOTS里面Baking与Baker的关键概念,方便大家上手学习掌握UnityDOTS开发。UnityDOTS开发模式,为了让大家在”创作”游戏的时候使用原来组件方式来编辑游戏场景与资源,同......
  • 如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件
    ​ 某讯的手游保护系统用的都是一套,在其官宣的手游加固功能中有一项宣传是对比较热门的Unity3d引擎的手游保护方案,其中对Dll文件的保护介绍如下,“Dll加固混淆针对Unity游戏,对Dll模块的变量名、函数名、类名进行加密混淆处理,有效提高静态分析门槛”。 通过动态分析了它的保护......
  • 如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件
    ​ 某讯的手游保护系统用的都是一套,在其官宣的手游加固功能中有一项宣传是对比较热门的Unity3d引擎的手游保护方案,其中对Dll文件的保护介绍如下,“Dll加固混淆针对Unity游戏,对Dll模块的变量名、函数名、类名进行加密混淆处理,有效提高静态分析门槛”。 通过动态分析了它的保护......
  • Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)
    ​ Unity3D导出的apk进行混淆加固、保护与优化原理(防止反编译)目录 前言:准备资料:正文:1:打包一个带有签名的apk2:对包进行反编译3:使用ipaguard来对程序进行加固 前言:对于辛辛苦苦完成的apk程序被人轻易的反编译了,那就得不偿失了,这篇文章就是解决Unity打包出来的包进......
  • Unity 文字转语音 Microsoft Interop.SpeechLib使用
    需要提前做以下设置:Unity中需要设置:Editor->ProjectSettings->Player->OtherSettings->ApiCompatibilityLevel->选择.Net4.x系统需要提前下载中文语音包Win11可以在设置->时间和语言->语音中查看已下载的语音其中HuihuiYaoyaoKangkang为中文语音......
  • Unity屏幕适配的3个妙招
    屏幕适配是面试中必问的一个题目,今天给大家说说怎么样做屏幕适配。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!设计分辨率大家都好理解,那么什么是适配策略呢?假设我们以设计分辨率是960x640为例,我们要适配到1920x1080上面,大家会发现,这个怎......
  • spine 3.8.75 导出到unity
    下载spine-unity运行库spine-unity-3.8-2021.unitypackagehttp://zh.esotericsoftware.com/spine-unity-download/?eqid=97a447270004c44a0000000564268a631.导出文件把  (1).atlas修改成 (1).atlas.txt2.JSON文件版本号"spine":"3.8.75"修改成"spine":&quo......
  • Unity版本使用情况统计(更新至2023年10月)
    本期UWA发布的内容是第十三期Unity版本使用统计,统计周期为2023年5月至2023年10月,数据来源于UWA网站(www.uwa4d.com)性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势,了解近半年来哪些Unity版本的使用概率更高。2023年5月-2023年10月版本分布 以近半年的数据统计来......
  • Wpf 第三方Mvvm包(mvvmLight/Microsoft.Toolkit.Mvvm/CommunityToolkit.Mvvm)
    十年河东,十年河西,莫欺少年穷学无止境,精益求精 mvvmLight和 Microsoft.Toolkit.Mvvm已被Nuget弃用且不再更新,在此不作说明CommunityToolkit.Mvvm是NetCore版本引用包,详情参考:WPFMVVM框架:CommunityToolkit.Mvvm包使用介绍1、wpf项目中使用 CommunityToolkit.Mvvm(NetCo......
  • Unity DOTS Component概述
    最近DOTS终于发布了正式的版本,我们来分享以下DOTS里面地几个关键概念,方便大家上手学习掌握UnityDOTS开发。UnityDOTS中Entity作为实体不直接去存放数据,而是将数据以一个个的组件为载体来存放起来。每个Entity会得到一些不同的ComponentData的组合,这些组合代表着不同的Entity......