【Unity学习】ECS、Job System、 Burst 之一:介绍

  1. 什么是ECS?

ECS,中文:实体-组件系统。并不是什么新鲜玩意,它是在游戏架构中广泛采用的一种架构。在游戏中,每个物体是一个Entity(实体),比如,敌人、子弹、车辆等。每个实体具有一个或多个组件,赋予这个实体不同的行为或功能。所以,一个实体的行为可以在游戏运行时通过加减组件进行改变。ECS经常和数据驱动模式一起使用。 wiki链接

从上面介绍可以看到,Unity中的GameObject好像扮演着实体的角色,但,它不够纯粹!

下一代ECS全新架构中,将不会再有GameObject的概念,取而代之的是真正的轻量化的Entity,一个Entity就只是Entity,可以把它看成超级轻量化的GameObject,实际上,一个Entity什么都做不了。它不存储任何数据,甚至连名字都没有!
你可以给Entity增加或移去Component,但,旧的Component不复存在,其被重新定义为ComponentData,这是一个继承自IComponentData接口的,高效的结构体:

struct MyComponent: IComponentData
{}

和旧的组件系统不同的是,IComponentData只存储数据,可随时添加到Entity或者移去。

EntityManager将会管理所有的Entity和其上的ComponentData,它将会保证内存的线性访问。
新定义的ComponentSystem管理游戏逻辑(类比以前的MonoBehavior),可以操作旧的GameObjects/Components, 或者新的 ECS ComponentData/ Entity。

2.为什么要引入 ECS
传统的 GameObject/MonoBehaviour 系统七宗罪:(深有体会)

面向对象的编程方式(曾经的圣典,已经跟不上时代,OOP最大的问题是数据和逻辑混在一起…现在我们要数据驱动模型)
Mono编译的未经优化的机器码
糟糕的垃圾回收
不能忍的单线程

Entity-component-system的出现,就是解决这些问题:

简单的思想:数据和逻辑构成你的游戏。
有了ECS,就可以使用Unity(c#) Job System 和 Burst 编译器,充分发挥多核CPU的潜力。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值