首先关于游戏实体,最早有这个概念是看了这篇文章---游戏Entity设计不完全整理
最早接触游戏编程的时候,看的是老师的代码,类似于早期的游戏,使用的是最传统的继承模式的实体系统。当时就觉得继承就是面向对象的一切,认为只要不断的继承就能解决所有问题。到后来才发现,继承的一个严重的缺陷是你必须知道所有父类的具体实现,到了最后一个实体也变得非常臃肿且难以修改。后来接触了设计模式,知道了策略模式这东西,大概的意思就是使用组合代替继承,个人认为组件模式更多的就是使用了策略。
总之,第一次接触组件模式的时候感觉很兴奋,认为一旦有了这种系统,无论策划怎么变,修改起来都是轻而易举的。于是立刻找了相关资料开始尝试实现,但是真正去实现之后才发现这玩意真不容易,越写越没思路,后来只能放弃。
后来跟一个朋友提起这个系统,然后他也尝试去弄了一下,相互交流之后感觉思路更开阔,不过苦于工作繁忙一直没时间再去弄,而且实际上对这个模式依旧是只有一个模糊的概念。其实期间一直在想办法找到可以参考的框架,那样就可以站在巨人的肩膀上去看组件模式。后来又接触了U3D,发现这玩意不正是组件模式的设计吗,于是迫不及待去看她的API,还去看了相关教程,然后就非常手痒的想实现一个看看。这时候公司说要做页游,于是就让我去搭框架,我第一个就想到了组件模式,而且第一个想法是直接复制U3D的那套。
虽然复制的话结果不需要想太多,但到了细节就不知道怎么实现了,比如实体具体该怎么创建,原型和克隆该怎么管理,最关键的是组件的动态添加和删除问题。虽然游戏中去给一个实体添加组