Unity ECS(一)了解ECS与DOTS

本文转自Unity Connect博主 EntherVarope

ECS是什么?可以做什么?为什么ECS成为我的选择?

什么是ECS(实体组件系统)?

其实ECS的概念早就诞生了,但是它是因为守望先锋才逐渐被人所知。(暴雪的守望先锋是基于ECS模式设计的,用于改善在大场景下多角色运算的效率)

ECS是一种软件架构模式,由三个元素组成:实体(Entity),组件(Component)和系统(System)(看起来和MVC很相似)。游戏程序分为这三个主要元素,并且通过定义每个系统的责任和关系来管理游戏。

实体代表游戏世界中的事物。实体本身没有特定功能,它们将会被组件填充来成为一个实体。

组件是附加到事物的数据。重点不是对象,而是数据,没有办法操纵它。比如操作游戏的角色时,位置,速度和体力等每个状态都将成为一个组成部分,并与称为“角色”实体相关联。另外,实体中的字段信息也被表示为组件部分。

系统是游戏世界的法则。给定与实体关联的某些组件作为数据输入源,或者更新某些组件的值(可能与输入的组件相同)。随着整个系统更新每一帧,游戏世界也在不断进行。我认为最容易想象的是物理定律。例如,想象一个刚体实体。它的运动基于利用位置和速度两个分量的系统来更新坐标。

粗略地说,系统负责处理,组件负责数据,而实体是一组组的组件,用于过滤系统正在处理的内容。由于系统和数据是完全分开的,因此它与面向对象不兼容。

Unity也具有类似于ECS的架构(自Unity2018.2起已提供ECS)。实体是已经削减到极限的游戏对象功能,组件是组件的序列化数据部分,其余部分是系统。Unity ECS是对纯ECS的改进。

ECS可以做什么?

UnityECS正在围绕这一设计模式开发新的“面向数据技术堆栈”(DOTS),如果经常关注Unity的发布会,就或多或少对它有所了解。但是事先写在前边,ECS并不能加速任何类型的游戏/程序。

ECS有望加速游戏的类型

  • 弹幕游戏
  • 有海量单位的大型RTS
  • 开放世界/沙盒
  • 集群模拟(例如新出的“动物星球”)

此类具有大量“遵循同一运算规则”对象的程序,便可以利用ECS来加速。

为什么ECS成为我的选择

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
 一: 什么是ECS?       ECS是一种新的架构模式(当然是针对Unity本身来说),这是一个取代GameObject / Component 的模式。 其模式遵循组合优于继承原则,游戏内的每一个基本单元都是一个实体,每个实体又由一个或多个组件构成,每个组件仅仅包含代表其特性的数据(即在组件中没有任何方法)。系统便是来处理拥有一个或多个相同组件的实体集合的工具,其只拥有行为(即在系统中没有任何数据)。       ECS旨在比GameObject / MonoBehaviour更容易处理大量物体。ECS由于是面向数据的设计,所以很容易并行高速处理,以及与Unity开发的C#JobSystem/Burst Compiler一起工作,从而获取更高的项目运行性能。二:ECS总体发展历史       目前Unity公司由Mike Acton 大佬主持DOD(Data Oriented Design 面向数据设计)的全面改革与推进工作,目的是旨在进一步推进Unity系统本身与Unity项目的执行效率。    ECS总体发展:    A: 在Unity2018引入Entities之前,其实ECS框架早已经出现,但是ECS还是因为守望先锋采用了这个框架才被我们所熟知,后来Git上面出现了一个Entitas的插件可以直接用在Unity上面。Entitas-Unity(有多个语言的port版本,Entitas-Unity下统一称为Entitas) 是 Unity的一个ECS(Entity/Component/System)框架,是在github上面的一个开源项目。    B: 经过Unity公司的认可与改造,目前Unity2018.x 版本已经通过 Package Manager 提供了Unity版本的ECS插件,名称为:“Entities”。    C: Unity2019.x 版本,对“Entities”插件的API进行了进一步改造与完善,以更规范的API实现更加高效的与规范的编程模式。 三:ECS(一)轻松入门篇       本“ECS入门篇”旨在全面讲解ecs 的相关理论与简单Hello World 的编程模式,且通过Unity2018.x与Unity2019.x 两个不同API的编程模式,初步讲解ECS的编程规范与模式规范。        需要进一步学习ECS的小伙伴们,可以关注后续“ECS(二)小试牛刀”篇的进一步讲解。   《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值