第一章 全新的cocos2dx
1.1.1 回归C++风格
抛弃Object-C风格,完全回归C++风格
1.1.2 更灵活的渲染架构
重新设计了渲染架构,渲染从UI树遍历中分离
1.1.3 更自由的发展
cocos2dx 3.0放弃了与Cocos2d-iPhone保持同步,拥有一个更值得期待的未来,两者不应该是互相制约的关系,应该是互相促进的关系
1.2.1 使用C++风格
1.2.2 跨平台的Label
对字体进行了重构,使用开源的FreeType字体库来解析文字和生产纹理
1.2.3 新的渲染系统
遍历绘制的元素,不直接进行绘制,而是将绘制命令包装成RenderCommand对象发送到绘制栈,绘制栈在遍历场景中每个元素之后开始绘制
好处
- 绘制命令可以被重用,将绘制命令从UI树的遍历中分离,多个不同的元素可以使用相同的绘制命令进行组合,如Lable、Particle、TileMap、都使用BatchCommand进行绘制
- 绘制命令进行集中处理,渲染系统可以做一些优化工作。对于相邻的绘制命令,如果它们使用相同的RenderCommand类型,使用相同的纹理及绘制参数,渲染系统就可以把它们合成一次绘制,俗称批渲染,也称为自动批绘制技术
UI树更多决定的是一种元素的坐标系变换,cocos2dx通过给Node引入globalZOrder来设定全局的绘制顺序,绘制栈则会优先根据globalZOrder中的设定进行排序,然后根据localZOrder局部Z值进行排序,来决定绘制顺序。
.
cocos2dx还为 Sprite 引入了自动裁剪技术,所以处于游戏视窗之外的sprite根本不会发送绘制命令到绘制栈,减少了不必要的绘制操作
1.2.4 统一的消息分发
事件分发器—EventDispatcher,能处理系统事件,也能注册自定义事件,简化游戏交互。
一个事件关联到一个UI元素,这个类型的事件根据该元素在场景中的绘制顺序被分发,离屏幕越近越优先处理。 好处: 当这个元素被移除场景时,与其相关联的订阅的处理者被移除,而不需要手动移除
1.2.5 物理引擎集成
- 物理世界被集成到Scene元素中,创建场景时可选择是否创建物理世界
- Node元素中包含一个physicsBody属性,对任何Node设置物理刚体
- 物理刚体包含了大量的物理属性和物理参数,能够被使用
1.2.6 新的数据结构
Vector Map<K,V>
与cocos2dx内存管理相结合