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个字节,内存拷贝性能会变得成倍的提升
相关推荐
雷霆嘎子5 小时前
移动游戏性能优化通用技法
游戏·unity
lunoctis5 小时前
Unity微信小游戏小窗口模式点击适配
unity·微信小游戏
向宇it8 小时前
【实现100个unity特效】unity中使用ShaderGraph实现一个贴图UV循环移动滚动的指示效果
游戏·3d·unity·c#·游戏引擎·贴图·uv
死也不注释10 小时前
第三章自定义检视面板_创建自定义编辑器类_实现自定义检视面板中的GUI内容(本章进度(1/9))
unity·编辑器
向宇it14 小时前
【unity组件介绍】URP Decal Projector贴花投影器,将特定材质(贴花)投影到场景中的其他对象上。
游戏·3d·unity·c#·游戏引擎·材质
快乐觉主吖1 天前
Unity网络通信的插件分享,及TCP粘包分包问题处理
tcp/ip·unity·游戏引擎
啊基米德2 天前
lua(xlua)基础知识点记录一
unity·lua·xlua
夜色。2 天前
Unity Android Logcat插件 输出日志中文乱码解决
android·unity
X-mj2 天前
Unity URP + XR 自定义 Skybox 在真机变黑问题全解析与解决方案(支持 Pico、Quest 等一体机)
unity·游戏引擎·xr
心疼你的一切3 天前
Unity 多人游戏框架学习系列一
学习·游戏·unity·c#·游戏引擎