一:前言
ECS与OOP不同,ECS是组合编程,而OOP的理念是继承
E表示Entity,每个Entity都是一个有唯一id的实体。C表示Component,内部只有属性,例如位置、速度、生命值等。S表示System,驱动实体的行为逻辑,比如攻击、移动、碰撞检测等
二:ECS的优势
——扩展性好:ECS架构使游戏对象的属性和行为分离开来,使得游戏对象的行为逻辑更加灵活和可扩展。例如,当需要添加新的游戏对象行为时,只需要创建新的组件和系统,而不需要修改所有游戏对象的行为逻辑
——可读性好:ECS架构将游戏对象的属性和行为分离开来,使代码更加清晰和易于理解。例如,当需要修改游戏对象的移动行为时,只需要修改移动系统,而不需要修改所有具有移动行为的游戏对象
——性能更佳:因为CPU读取数据是先从缓存中查找,缓存中没有再去内存中查找,找到数据后就会将数据存放在缓存中,CPU访问内存的速度会比访问Cache的速度慢100倍,因此提高缓存的命中率,避免频繁去内存会大大提高性能。在Unity传统模式下,假如我们想要移动一个物体,那么会修改它的Posititon,但是使用的时候整个Transform都会被加到缓存中,而Transform中有很多我们不需要的属性占用了很大的缓存空间,所以就造成了严重的内存浪费,而ECS是数据组件化的,需要哪些数据就用哪些数据,比如我们同样需要修改位置,我们只需要声明一个float3数据即可解决,与传统方式相比,这种方式占的内存微乎其微
三:Entitas插件
——