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个字节,内存拷贝性能会变得成倍的提升
相关推荐
玖玥拾1 天前
C# 语言进阶(十四)Unity UI界面开发 + 网络消息联动
服务器·开发语言·网络·ui·unity·c#·游戏引擎
野区捕龙为宠1 天前
Unity 持久化数据
unity·游戏引擎·lucene
郝学胜-神的一滴1 天前
[简化版 GAMES 101] 计算机图形学 17:纹理技术从基础原理到多场景实战应用
c++·unity·游戏引擎·图形渲染·three.js·opengl·unreal
_ZHOURUI_H_2 天前
MyFramework: 同样是 Unity 游戏开发框架,和 HTFramework 的设计取向有什么不同?(下)
unity·游戏引擎·游戏开发·游戏ui·手游开发
小贺儿开发3 天前
Unity 知识库智能问答系统(RAG)
人工智能·unity·ai·大模型·智能问答·知识库·互动
丁小未3 天前
基于MVVM框架的XUUI 扩展的UI管理系统教程
unity·mvvm·ui框架·xuui·ui管理器
丁小未4 天前
基于MVVM框架的XUUI HelloWorld 新手教程
unity·性能优化·c#·游戏引擎
丁小未4 天前
基于MVVM框架的XUUI MoreComplex案例
unity·c#
EQ-雪梨蛋花汤4 天前
【Unity笔记】VR 一体机画面锯齿、模型边缘闪烁、接缝抖动排查:MSAA、Mipmap、Render Scale、Z-Fighting 全流程记录
笔记·unity·vr
YigAin4 天前
Unity Spine 资源出现白边的解决办法
unity·游戏引擎·spine