一、引擎系统总览
游戏引擎是为某种使用方式而编写的程序,其使用方式的不同导致各引擎之间的差异,其引擎内系统之间可能交叉在一起。
下面是对一般引擎系统的构成划分,如下图:
cocos2d-x使用了些第三方开源库,用于支持文件解压、图片解析、网络支持、视频音频等功能;此外,cocos2d-x封装了些与平台无关的接口,如文件加载、纹理解析、线程操作等。
渲染系统是cocos2d-x的核心部分,包含了场景中元素的层级结构、关系及元素的管理、遍历和绘制等。这一层也是与OpenGL ES交互的部分。
此外,cocos2d-x有一套优秀的动画系统,它将一些非动画的特性(如回调函数)与动画结合起来,大大简化了游戏开发工作。
最后,cocos2d-x支持丰富的第三方工具,如TexturePacker、Tiled、CocosBuilder等。
二、Cocos2d-x内存管理机制
cocos2d-x采用引用计数的内存管理机制。
cocos2d-x中几乎所有对象都继承自Ref基类。Ref基类主要的职责就是对对象进行引用计数管理。
通过特定的操作调用retain方法,引用计数加1;调用release方法,引用计数减1。为了避免开发时对计数本身管理的成本,cocos2d-x将这两种方法封装在了这些特定方法中,如new,removeFromParent等。
cocos2d-x同时将这些对象加入到AutoReleasePool中,便于每帧最后对对象执行释放操作。
三、主循环中每帧执行
cocos2d-x在每帧发生的所有事情如下图所示:
四、其他
cocos2d-x还提供了如scheduler、异步加载、事件分发等功能,其高度的灵活性与拓展性大大增加了开发效率,同时也是对游戏性能优化的可采取方案。