Lua实现ECS简单框架

 ECS模式全称就是Entity-Component-System模式.

– Entity是实例,作为承载组件的载体,也是框架中维护对象的实体. 
– Component只包含数据,具备这个组件便具有这个功能. 
– System作为逻辑维护,维护对应的组件执行相关操作.

面向对象:把共同的东西抽象出来然后写在基类里面,然后不断的继承它们.

面向组件:把共同的东西抽象成一个组件,然后组合成一个实体.

虽然ECS的开发思想很早就提出来了,但是我发现没有Lua版本的一个ECS框架,其他语言版本倒是挺多的,今天在github上看到触控的 quick-cocos2d-x 的源码发现了GameObject.lua,Registry.lua,Component.lua.  

这3个文件,觉得这就是ECS的思想啊! GameObject.lua 代表了 实体也就是Entity,Component.lua代表了Component,

Registry.lua 相当于一个注册类,缓存了所有的Component.而里面的具体业务逻辑代码构成了System.

只需要把新的组件继承自Component类,实体继承自GameObject类,然后用实体的addComponent 方法添加需要的组件即可.而Component里

的 exportMethods_ 函数是把Component的里的方法导出到实体中,可以在实体对象中直接访问组件里的方法,

这是一种非常巧妙的设计,我觉的这3个文件完全可以抽出来放当我们的项目中去.


Github地址:

https://github.com/chukong/quick-cocos2d-x