《我所理解的cocos2dx》第十六章运行时游戏对象模型

《我所理解的cocos2dx》第十六章运行时游戏对象模型

《我所理解的cocos2dx》第十六章运行时游戏对象模型《我所理解的cocos2dx》第十六章运行时游戏对象模型

以对象为中心

《我所理解的cocos2dx》第十六章运行时游戏对象模型面向对象

刚开始对象的类层次结构非常简单,随着设计的推进,层次结构就会在纵横方向不断膨胀,形成一个十分庞大的层次结构

《我所理解的cocos2dx》第十六章运行时游戏对象模型《我所理解的cocos2dx》第十六章运行时游戏对象模型

组件模型

《我所理解的cocos2dx》第十六章运行时游戏对象模型

优点

  1. 没有复杂层级的结构问题
  2. 没有多继承的问题
  3. 没有分类学的烦恼等等
  4. 属性间没有依赖,便于扩展和修改
  5. 更有效的利用内存,每个对象占用的内存实际上就是他必须要定义的属性,而不会像继承那样会导致一些子类含有大量的无用属性
  6. 在内存布局上,所有相同类型的属性实例在内存中是连续存储的,把数据连续存储于内存中,能够减少或者消除缓存命中失败
  7. 更容易实现数据驱动

缺点

  1. 当游戏对象由大量的属性构成时,属性之间的关系可能变得比较混乱
  2. 其次,单凭一些细粒度的属性很难实现比较复杂的行为,因此,根据实际需求,有些属性的粒度通常会比较大
  3. 由于属性存在于单独的属性表中,仅保存一个游戏对象的唯一标志符,很难整体了解游戏对象而进行有效的调试,因此在Genius-x框架中每个属性b保存着游戏对象的指针,可以查看其他属性,方便调试

Entity Component System (ECS)框架

以属性(数据)为中心的软件架构,遵循合成由于继承的思想,采用数据库类似的结构来存储游戏对象

属性结构
《我所理解的cocos2dx》第十六章运行时游戏对象模型

.