首页 > 其他分享 >Unity DOTS Component概述

Unity DOTS Component概述

时间:2023-11-29 11:46:13浏览次数:36  
标签:DOTS ArchType Component Entity Unity 内存 组件

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

Unity DOTS 中Entity作为实体不直接去存放数据,而是将数据以一个个的组件为载体来存放起来。每个Entity会得到一些不同的ComponentData的组合,这些组合代表着不同的Entity类型,描述这些组合的对象叫做ArchType。Component包含了Entity中的数据,同时给System来进行读写访问。

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

当我们定义一个Component,我们需要继承IcomponentData接口类。IcomponentData什么方法都没有定义,只是标记这个结构类型是一个ECS中ComponentData的组件类。当我们使用struct 来定义ComponentData的时候,意味着我们使用的是一个非托管(垃圾回收)的对象,里面的数据成员也是需要用非托管的,如果你要用托管的数据成员与对象,你可以把struct 改成class来定义。

Component的内存基于Chunk(16kib)来分配特定ArchType的大小(不同组件组合后的内存大小)的内存,Component属于这个内存块中的某一个部分。比如A类Entity是由A,B,C组件组成,那么ArchType就是[A, B, C] ArchType就是每个组件的总和。通过Chunk,分配一个ArchType的内存出来,这样Entity某个ComponentData就是这个内存块中的一个部分。

Chunk(16Kib): 【[A, B, C, …],[A, B, C, …],[A, B, C, …],[A, B, C, …],[A, B, C, …]】

我们在做DOTS开发中常用的有几种常用的Component类型,总结如下:

Unmanaged Component: 使用最多的非托管的组件类型,但是里面的数据成员必须是非托管的,所以类型有限。

Managed Component: 可以托管的组件类型, 里面的数据成员也可以是任意的类型;

Shared Component: 多个Entity实例公用一个ComponentData的内存。

Cleanup Component: 如果我们的某个Entity有一个CleanupComponent的时候,当我们销毁一个Entity的时候,会清理掉其它所有的组件。

Tag Component: 非托管的组件对象,起到标记的作用,可以使用tag component来筛选Entity。

Buffer Component: 定义了一个可以改变数组大小的数组数据。

Enable Component: 可以enable/disable某个组件,而不是像Remove组件一样改变entity的ArchType, 因为改变ArchType非常消耗性能。

更多的Unity DOTS 的文档,可以关注我们,获取相关的学习资料与代码。

标签:DOTS,ArchType,Component,Entity,Unity,内存,组件
From: https://www.cnblogs.com/bycw/p/17864456.html

相关文章

  • Unity DOTS World Entity ArchType Component EntityManager System概述
    最近DOTS终于发布了正式的版本,我们来分享以下DOTS里面地几个关键概念,方便大家上手学习掌握UnityDOTS开发。UnityDOTS中所有的Entities都是被放到World世界中。每个Entity在它所在的World里面有唯一不同的ID号来区分。DOTS项目中可以同时有多个World。每个World有一个Entity......
  • 【unity】鼠标拖拽实现摄像机围绕物体视角旋转(物体不动、摄像机旋转)
    直接贴效果和源码了usingUnityEngine;publicclassStagitCamController:MonoBehaviour{//旋转的目标点publicTransformtarget;publicfloatdistance=5.0f;publicVector3startRotation;publicfloatxSpeed=120.0f;publicf......
  • Unity 2022 LTS版本的稳定性
    1)Unity2022LTS版本的稳定性2)多个小资源包合并为大资源包的疑问3)启动Unity导入变动的资源时,SingletonScriptableObject 加载不到这是第362篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。UWA社区主页:commu......
  • ABAP Software component SAP_BASIS 下的数据库表 URS02 的用途介绍
    数据库表USR02是SAP系统中的一个重要表,它用于存储用户的验证信息。在ABAP开发中,我们经常需要与此表进行交互,以管理和验证用户的凭据。这张表里一些主要的字段含义罗列如下:BNAME:登录用户名GLTGV:用户在系统生效的起始时间GLTGB:用户在系统生效的截止时间USTYP:用......
  • 【漏洞复现】蓝凌OA sysUiComponent 任意文件上传漏洞
    阅读须知此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习......
  • UE,Unity和WebGL技术对比
    title:UE,Unity和WebGL技术对比banner_img:https://drive.studyinglover.com/api/raw/?path=/photos/blog/background/1679397016745.pngdate:2023-3-2119:00:00tags:-元宇宙-ThreeJSUE,Unity和WebGL技术对比随着科技的不断进步和数字化时代的到来,元宇宙(Metaverse)已......
  • PCA (principal component analysis)算法
    一、PCA算法PCA(principalcomponentanalysis)是一种应用广泛的降维算法,其基本思想是想通过找到一个低维的“最具有代表性”的方向,并将原数据映射到这个低维空间中去,从而实现数据的降维。1.算法原理  我们先从二维数据简单说明,假设我们有n个二维数据组成的数据集\(D_{n\ti......
  • Probabilistic principal component analysis-based anomaly detection for structure
    SHMcanprovidealargeamountofdatathatcanrevealthevariationinthestructurecondition什么是压缩传感,数据重构,研究背景与意义,怎么用基于模型的方法不可避免的缺点是模型的不确定性,因为很难创建能够模拟真实物理情况的可靠的结构模型。为了克服基于模型的方法的缺......
  • unity 精灵图集(Sprite Atlas)使用以及带来的问题
    1、图集的使用参考https://zhuanlan.zhihu.com/p/4561013732、注意点unity中设置必须是图集的设置TightPacking选项取消,若打勾切图会有问题。......
  • Visual Components软件典型功能描述 衡祖仿真
    1、即点即用,即插即用vc提供大量的组件模块,组件都已经赋子行为和渲染,看起来复杂的模拟场景,可以通过简单拖拉组合,即可成为一条运动的仿真。节省更多的时间,让布局更灵动。2、PLC功能过去,PLC程序的调试都是必须等到所有的设备都到场安装好了之后再联机调试。通过此软件,PLC设备通过软件......