ESC一:OOP世界与ECS世界
一、M-V架构
在游戏开发中,MCV-Evennt MVVM是很常见的架构。M-V的架构是一套很经典的架构,这套架构很适合用来处理游戏的功能,
像是:商店 角色信息 角色养成等。但是把M-V拿去处理游戏的战斗就不太合适了。
假设我们是的地图上有20个怪物,这些怪物可以有自己的行为,行走,寻敌,攻击敌人等。
这些怪物就相当于Controller,一共有20个怪物的Controller,每一个怪物会有一个血量,攻击值等。
那么就会有对应的20份Model,或者一个Model去维护一个List用来存储这20个怪物的数据。
看起来好像没啥问题,但是怪物的Model只有在怪物出生的时候才会设置,怪物死亡后就消毁,他不像角色信息或者角色养成信息一样会
一直存在,如果玩家不进入战斗的地图就不会有怪物信息,怪物相关的信息并不会常态存在。
同时,对于20个怪物Controller来说,每一个怪物都在Update轮询,然后处理逻辑,这么多的Update对性能也是一个很大的损耗。
所以M-V模式并不适合处理战斗场景,
M-V的Model是单例存在的,不适合战斗这种需要频繁创建消耗的过程,
它的Controller天然倾向每帧Update造成性能浪费。
所以OOP并不适合去做战斗。
二、OOP世界ECS世界
M-V模式并不适合去处理战斗,M-V是OOP模式,把M-V叫做OOP世界,OOP世界是用来做游戏系统功能的,游戏系统功能的Model是唯一的单例,像是背包,角色养成等。
我们需要在创建一个世界专门用来处理需要频繁创建的战斗场景,ECS就很适合用来处理战斗,我们创建一个世界叫ECS世界。
所以现在我们的代码文件夹下有2个大类文件夹:OOPWorld和ECSWorld。
OOPWorld:用来处理游戏功能 M-V架构
ECSWorld:用来处理战斗 ECS架构
游戏的流程就是这样的:
GameStart游戏启动->OOPWorld启动
如果玩家进入战斗场景:启动ECS世界
玩家离开战斗场景:消耗ECS世界
现在代码文件夹下会有3个文件夹:GameStart,OOPWorld和ECSWorld。

浙公网安备 33010602011771号