目录
第1章Cocos2dLua
1.1概述
1.1.1Cocos2d的起源
1.1.2Cocos2dx的诞生
1.1.3Cocos2dLua的发展
1.2版本介绍
1.2.1Cocos2dx版本介绍(C++)
1.2.2Cocos2dLua版本介绍
第2章Lua编程
2.1Lua在Windows下的运行环境搭建
2.1.1安装
2.1.2运行
2.2Lua基础
2.2.1Lua介绍
2.2.2Lua语法
2.3Lua进阶
2.3.1Metatable(元表)
2.3.2重要元方法介绍
2.3.3封装
2.3.4继承
2.3.5多态
第3章Cocos2dLua基础
3.1Cocos2dLua开发环境配置
3.1.1安装Cocos2dLua
3.1.2安装Sublime与QuickXDev
3.1.3测试开发环境
3.2引擎架构与目录结构
3.2.1引擎架构
3.2.2引擎文件结构
3.2.3项目文件结构
3.3MVC框架
3.3.1什么是MVC
3.3.2Cocos2dLua中的类实现
3.3.3Cocos2dLua的MVC实现
3.4基础概念
3.4.1导演
3.4.2节点
3.4.3场景
3.4.4层
3.4.5精灵
3.5坐标系
3.5.1笛卡儿坐标系
3.5.2屏幕坐标系和Cocos2dLua坐标系
3.5.3世界坐标系VS本地坐标系
3.5.4锚点
3.5.5忽略锚点
3.5.6ZOrder与渲染顺序
3.6文本标签
3.6.1TTF文本标签
3.6.2BMFont文本标签
3.6.3UILabel控件
3.6.4Mac下使用GlyphDesigner制作字体
3.6.5Windows下使用BMFont制作字体
3.7按钮
3.7.1UIButton按钮
3.7.2UIPushButton按钮
3.7.3UICheckBoxButton按钮
3.7.4UICheckBoxButtonGroup按钮
3.8场景转换
3.8.1概念
3.8.2带转场特效的场景
3.8.3场景转换示例
3.9动作
3.9.1瞬时动作
3.9.2有限时间动作
3.9.3复合动作
3.9.4变速动作
3.9.5节点与动作相关的接口
3.10序列帧动画
3.10.1精灵表单
3.10.2播放序列帧动画
3.10.3动画缓存
3.11调度器
3.11.1全局调度器
3.11.2节点调度器
3.12事件分发机制
3.12.1节点事件
3.12.2帧事件
3.12.3键盘事件
3.12.4加速计事件
3.12.5触摸事件
3.13多分辨率适配
3.13.1Cocos2dx中的多分辨率适配
3.13.2Cocos2dLua中的多分辨率适配
第4章消除游戏实战(一)
4.1FruitFest(1):主场景
4.1.1游戏玩法
4.1.2美术设计
4.1.3分辨率适配策略
4.1.4主场景
4.2FruitFest(2):创建PlayScene
4.2.1准备BMFont
4.2.2创建PlayScene
4.2.3添加转场代码
4.2.4添加UI
4.3FruitFest(3):初始化水果矩阵
4.3.1水果类
4.3.2矩阵算法
4.3.3掉落算法
4.3.4矩阵初始化的代码实现
4.4FruitFest(4):选中水果
4.4.1绑定触摸事件
4.4.2清除已高亮区域
4.4.3高亮算法
4.4.4分数算法
4.5FruitFest(5):消除与掉落
4.5.1消除高亮水果
4.5.2掉落与补全
第5章Cocos2dLua进阶
5.1UI控件
5.1.1输入控件
5.1.2进度条控件
5.1.3滑动条控件
5.1.4滚动视图控件
5.1.5列表视图控件
5.1.6分页视图控件
5.2瓦片地图
5.2.1用Tiled制作瓦片地图
5.2.2地图视角
5.2.3在Cocos2dLua中使用TMX
5.3精灵批处理
5.3.1手动批处理
5.3.2自动批处理
5.3.3手动批处理VS自动批处理
5.4碰撞检测
5.4.1点与点的碰撞
5.4.2点与矩形的碰撞
5.4.3圆与圆之间的碰撞
5.4.4轴对齐矩形之间的碰撞
5.4.5非轴对齐矩形之间的碰撞
5.5内存管理
5.5.1Lua内存管理
5.5.2Cocos2dLua内存管理
5.5.3纹理缓存
5.5.4精灵帧缓存
5.6数据与存储
5.6.1JSON数据
5.6.2crypto数据编码
5.6.3UserDefault数据存储
5.6.4GameState数据存储
5.6.5文件读写
5.7背景音乐与音效
5.8粒子系统
5.8.1什么是粒子系统
5.8.2Cocos2dLua中的粒子系统
5.8.3粒子系统批处理节点
5.8.4粒子属性
5.8.5粒子编辑器介绍
5.8.6使用粒子系统
5.9Spine骨骼动画
5.9.1Spine运行库
5.9.2用法示例
5.10裁剪节点
5.11渲染纹理
第6章消除游戏实战(二)
6.1FruitFest(6):过关与信息存储
6.1.1添加进度条
6.1.2过关与数据持久化
6.2FruitFest(7):爆炸特效与声音
6.2.1爆炸特效
6.2.2游戏音乐
6.2.3后记
第7章Cocos2dLua高级
7.1网络通信
7.1.1network
7.1.2SocketTCP
7.1.3WebSocket
7.2物理引擎
7.2.1创建带物理世界的场景
7.2.2创建物理边界
7.2.3创建受重力作用的精灵
7.2.4碰撞检测
7.2.5完整示例
7.3摄像机
7.3.1OpenGL视口
7.3.2cc.Camera
7.3.3场景的默认摄像机
7.3.4自定义摄像机
7.4自定义事件
7.4.1加载EventProtocol组件
7.4.2主要接口
7.4.3完整示例
7.5有限状态机
7.5.1基本用法
7.5.2完整示例
7.6扩展Lua接口
7.6.1LuaCAPI
7.6.2Lua栈
7.6.3LuaBinding实战(1):tolua++手动绑定
7.6.4LuaBinding实战(2):扩展Spine接口
7.7OpenGLES2.0与shader编程
7.7.1OpenGLES概述
7.7.2OpenGLES绘制几何图形
7.7.3矩阵变换
7.7.4纹理贴图
7.7.5Cocos2dLua中使用自定义shader
第8章打包与发布
8.1Android项目的编译与打包
8.1.1安装JDK
8.1.2BuildNative
8.1.3AndroidStudio打包
8.2Mac下编译iOS版本
8.2.1先决条件
8.2.2Debug真机调试
8.2.3Release打包
8.3发布时加密Lua源文件
8.3.1compile_scripts脚本
8.3.2去掉源代码引用
8.3.3修改Lua启动入口
8.4发布时加密图片资源文件
8.4.1encrypt_res脚本
8.4.2资源加密示例
8.5SDK接入
8.5.1使用luaj接入AndroidSDK
8.5.2使用luaoc接入iOSSDK
作为使用Lua进行Cocos开发的专业图书,它不但在Lua语言和引擎方面有详细的讲解,更在引擎的诸多细节上花费了大量心思,包括缓存、内存管理与监控、数据加密等,是不可多得的Cocos2d-x开发进阶教材!
——卞安(网名:红孩儿,国内游戏开发技术专家)
本书详尽地讲述了Cocos2d引擎的起源与发展,不仅让初学者深入了解到该引擎的来龙去脉,更对Cocos2d众多版本的选择上给予了重要的剖析与建议。 作者还通过由浅入深的教学方式来讲解项目实战开发的过程,介绍了许多实战经验,避免初学者在学习过程中走弯路。全书重点讲解Cocos2dx-Lua,其跨平台性和热更新机制已是当今游戏开发中的刚性需求!因此我建议学习Cocos2d引擎的读者把此书列为入门!
—— 李华明(网名:Himi,国内游戏开发技术专家,网易《功夫熊猫》游戏团队CTO)
本书是由 Cocos 官方编写的 Cocos2d-x Lua 实战书籍。本书内容由浅及深,从 Cocos2d-x Lua 的基本概念、Lua 编程基础,到完整的游戏设计和实现都有详细论述。 除了基础知识和游戏开发实践,本书还包含了 Cocos2d-x Lua 在内存管理、性能优化、网络访问、UI 库等进阶内容。 由于本书由触控科技精通 Cocos2d-x Lua 的资深开发人员亲自编写,完全遵循 Cocos2d-x Lua 的实践方法。所以不管是即将进入手游行业的 Cocos2d-x Lua 的初学者,还是经验丰富的开发者,本书都是合适的学习资料和参考手册。
—— 廖宇雷(Cocos2d-lua引擎作者)
近几年有幸目睹了Cocos2d-x逐渐发展壮大,并成为了开源项目的骄傲。C++虽然是游戏开发的主流技术,但对于初学游戏开发的人来说过于复杂且不易上手。Lua是国内脚本开发技术的主流,自Cocos2d-x提供Lua-binding脚本技术以来,有效地降低了学习难度,提高了开发效率,对Cocos2d-x技术的推广普及起到了不可估量的作用。杨雍团队多年以来一直从事Cocos2d-x的研究和推广工作,经验丰富。随着这本书的交付出版,Cocos2d-x技术和Cocos2d-x社区必将有一个更加光明的未来……
——岳阳(网名:老G,资深Cocos技术爱好者)
一年前,泰然网教主杨雍跟我说要出一本 Cocos2d-x 入门图书。今天,他真做到了。本书是泰然网的诚意之作,它以 Cocos2d-Lua 为背景,从 Lua 语言基础到 Cocos2d-x 核心知识点,由浅入深,全面论述。本书以一个完整的游戏实例收尾,帮助读者快速动手实践。
——屈光辉 (泰然网ID:子龙山人,国内游戏开发技术专家,现任职于Cocos引擎团队)