ZECS Unity脚本框架简介(1)—什么是ECS

本文介绍了Unity中的ECS(Entity-Component-System)模式,包括其起源、特点和缺点。ECS通过组合而非继承降低耦合性,提高复用性,但面临耦合度高、性能问题和多人开发协作困难等挑战。为解决这些问题,作者开发了ZECS框架,Unity也将发布内置的ECS框架。
摘要由CSDN通过智能技术生成

前序

在介绍主角ZECS之前,很有必要介绍一下ECS框架的由来。所谓的ECS模式全称就是Entity-Component-System模式。很早就听说过Unity等引擎中广泛地使用了这样的模式,但从Unity的脚本命名,Unity是就是一种ECS框架。

ECS的出身

由于之前一直从事PC、移动端开发,倒是熟悉MVC、RPC、SOA、SSH等各种前后端框架,对这种ECS设计模式的何时诞生以及其的发展过程不是很了解,说实话也是接触Unity 2年之后才无意中认识了它。
大概查阅它诞生在2002年的Game Dungeon Siege上,ECS全写即“实例-组件-系统”的设计模式。简言之,实例就是一个游戏对象实体,一个实体拥有众多的组件,而游戏系统则负责依据组件对实例做出更新。
举个例子,如果对象A需要实现碰撞和渲染,那么我们就给它加一个碰撞组件和一个渲染组件;如果对象B只需要渲染不需要碰撞,那么我们就给它加一个渲染组件即可。而在游戏循环中,每一个系统都会遍历一次对象,当渲染系统发现对象持有一个渲染组件时,就会根据渲染组件的数据来执行相应的渲染过程。同样的碰撞系统也是如此。
也就是说游戏对象需要什么就会给自己加一个组件。而系统会依据游戏对象增加了哪些组件来做出行为。换言之实例只需要持有必要的数据,由系统负责逻辑就行了。这也就是ECS模式能和数据驱动很好结合的一个原因。
于是在上述问题中所有的派生类都消失了,只留下了GameObject。

特点

从设计原则上讲,它使用组合/聚合关系代替继承关系,游戏对象间避免使用了继承这种强依赖关系,降低了耦合性。同时使用不同的行为/属性组件对实体对象进行修饰,提升了系统的复用性、扩展性。这种模式充分考虑游戏场景的特点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值