公司推广做哪个网站,wordpress微信小程序插件,好网站的标准,天津建设网站分包服务卡最近DOTS终于发布了正式的版本, 我们来分享以下DOTS里面地几个关键概念#xff0c;方便大家上手学习掌握Unity DOTS开发。
Unity DOTS 中Entity作为实体不直接去存放数据#xff0c;而是将数据以一个个的组件为载体来存放起来。每个Entity会得到一些不同的ComponentData的组…最近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 的文档可以关注我们获取相关的学习资料与代码。