Unity DOTS1.0 入门(1) ECS机制与概述

ECS机制与概述

Entity:实体

  • 由一个一个的Component组合在一起,是连续的内存布局。
  • 通过EnitityManager来负责高效的分配和释放相关entity.

World:世界

  • 一个entity的集合,在当前世界里面,每个Entity都有唯一不同的entityld;
  • 运行时Unity会自动创建一个Default World,然后把所有需要迭代的system全部假如到这个World中

ArchType

  • 几个Component组成的数据为一个ArchType,这个决定了这些Component的内存排布
  • 由多少种Component的组合,就有多少个ArchType

Chunk

16Kb 大小,用来存放拥有同样的ArchType的Entities,产生连续的内存布局

Component:组件数据简介(下一节详解)

  • 一般用Struct,可以定义为Class
  • 不包含任何逻辑或行为,只是纯数据
  • 由EntityManager来添加或者删除

System:代码算法

  • 可通过多线程处理数据,通过components获得需要处理的数据
  • World Update 会迭代System
  • 伪代码:遍历wordl里面所有的System控制entityA移动;
    • System.OnUpdate(ref TransformComponent, ref SpeedComponent, ref comp3){ 更新Transfrom 数据,这样,物体就移动了; }

Job System: 多线程开发支持

  • 使用线程池迭代System,数据是使用组件数据。

EntityQurey

  • 用来查询组件数据
  • 到ArchType管理的所有组件组合的内存块里面,把某些类型的组件数据,拿回来,放到一个连续的内存块里面,然后给System使用。

Burst工具链

  • 传统il2cpp 将.net转为cpp代码,然后再编译运行
  • Burst工具链 将.net代码LLVM 转为natvie code,使用了"单指令多数据集"MMS
  • MMx指令集实质是一种SIMD数据处理方式(单指令流,多数据流)。由Intel公司开发,它允许CPU同时对2-4个甚至8个数据进行并行处理。内存拷贝时,可一次拷贝8个字节,内存拷贝性能会变得成倍的提升
相关推荐
一步一个foot-print7 小时前
【Unity】Light Probe 替代点光源给环境动态物体加光照
unity·游戏引擎
@LYZY9 小时前
Unity 中隐藏文件规则
unity·游戏引擎·游戏程序·vr
霜绛11 小时前
C#知识补充(二)——命名空间、泛型、委托和事件
开发语言·学习·unity·c#
Sator113 小时前
使用Unity ASE插件设置数值不会生效的问题
unity·游戏引擎
程序猿追15 小时前
轻量级云原生体验:在OpenEuler 25.09上快速部署单节点K3s
人工智能·科技·机器学习·unity·游戏引擎
B0URNE15 小时前
【Unity基础详解】(7)Unity核心:动画系统
unity·游戏引擎
我的golang之路果然有问题16 小时前
mac M系列芯片 unity 安装会遇到的错误以及解决
经验分享·学习·macos·unity·游戏引擎
Hody912 天前
【XR开发系列】2025 年 XR 开发入门,我该选择 Unity 还是 Unreal Engine?
unity·xr·虚幻
DvLee10242 天前
UnityGLTF 材质创建与赋值流程
unity·材质
HahaGiver6662 天前
从0到1做一个“字母拼词”Unity小游戏(含源码/GIF)- 字母拼词正确错误判断
unity·游戏引擎·游戏程序