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。

posted @ 2026-07-19 01:14  apssic  阅读(13)  评论(0)    收藏  举报