内容介绍
本书是介绍Cocos2dxLua游戏编程和开发技术的书籍。书中介绍了使用Cocos2dxLua中的核心类、瓦片地图、物理引擎、音乐音效、Cocos2dxGUI控件、Cocos2dx中的3D特性、数据持久化、网络通信、性能优化、多平台移植、程序代码管理、两大应用商店发布产品。
全书分为6篇:基础篇、进阶篇、数据与网络篇、优化篇、多平台移植篇和实战篇。
基础篇包括第1~9章,内容涵盖了Lua语言基础、Cocos2dxLua介绍、环境搭建、标签、菜单、精灵、场景、层、动作、特效、动画和用户事件。
进阶篇包括第10~15章,内容涵盖了游戏音乐与音效、粒子系统、瓦片地图、物理引擎、Cocos2dxGUI控件和Cocos2dx中的3D特性。
数据与网络篇包括第16~18章,内容涵盖了数据持久化、基于HTTP网络通信和Node.js与WebSocket网络通信。
优化篇包括第19章性能优化。
多平台移植篇包括第20和第21章,分别是移植到Android平台和移植到iOS平台。
实战篇包括第22~25章,分别是使用Git管理程序代码、项目实战:迷失航线
目录
- 第1章准备开始
- 1.1本书学习路线图
- 1.2使用实例代码
- 第一篇基础篇
- 第2章Lua语言基础
- 2.1Lua开发环境搭建
- 2.1.1安装LDT工具
- 2.1.2HelloLua实例测试
- 2.2标识符和保留字
- 2.2.1标识符
- 2.2.2保留字
- 2.3常量和变量
- 2.3.1常量
- 2.3.2变量
- 2.3.3命名规范
- 2.4注释
- 2.5Lua数据类型
- 2.5.1数据类型
- 2.5.2type函数
- 2.5.3数据类型转换
- 2.6运算符
- 2.6.1算术运算符
- 2.6.2关系运算符
- 2.6.3逻辑运算符
- 2.6.4运算优先级
- 2.7控制语句
- 2.7.1分支语句
- 2.7.2循环语句
- 2.7.3跳转语句
- 2.8table类型
- 2.8.1字典
- 2.8.2数组
- 2.9字符串类型
- 2.9.1字符串截取
- 2.9.2字符串转换
- 2.9.3字符串查询
- 2.9.4字符串格式化
- 2.10函数
- 2.10.1使用函数
- 2.10.2变量作用域
- 2.10.3多重返回值
- 2.11闭包函数
- 2.11.1嵌套函数
- 2.11.2返回函数
- 2.11.3使用闭包表达式
- 2.12Lua中的面向对象
- 2.12.1Lua中的对象
- 2.12.2类的实现
- 本章小结
- 第3章Cocos2dx Lua API与环境搭建
- 3.1移动平台游戏引擎介绍 [4]
- 3.2Cocos2d家谱
- 3.3Cocos2dx设计目标
- 3.4搭建Cocos2dx Lua API开发环境
- 3.4.1安装Visual Studio开发工具
- 3.4.2下载和使用Cocos2dx Lua API官方案例
- 3.4.3配置Cocos2dx环境
- 3.4.4使用API文档
- 第4章Hello Cocos2dx
- 4.1第一个Cocos2dx Lua API游戏
- 4.1.1创建工程
- 4.1.2工程文件结构
- 4.1.3重构HelloLua工程
- 4.1.4运行HelloLua工程
- 4.1.5调试HelloLua工程
- 4.2Cocos2dx核心概念
- 4.2.1导演
- 4.2.2场景
- 4.2.3层
- 4.3Node与Node层级架构
- 4.3.1Node中重要的操作
- 4.3.2Node中重要的属性
- 4.3.3游戏循环与调度
- 4.4Cocos2dx坐标系
- 4.4.1UI坐标
- 4.4.2OpenGL坐标
- 4.4.3世界坐标和模型坐标
- 第5章标签和菜单
- 5.1游戏中的文字
- 5.2使用标签
- 5.2.1Label类
- 5.2.2实例: 使用系统字体和TTF字体
- 5.2.3实例: 使用位图字体
- 5.2.4LabelAtlas类
- 5.3使用菜单
- 5.3.1文本菜单
- 5.3.2精灵菜单和图片菜单
- 5.3.3开关菜单
- 第6章精灵
- 6.1Sprite精灵类
- 6.1.1创建Sprite精灵对象
- 6.1.2实例: 使用纹理对象创建Sprite对象
- 6.2精灵的性能优化
- 6.2.1使用纹理图集
- 6.2.2使用精灵帧缓存
- 第7章场景与层
- 7.1场景与层的关系
- 7.2场景切换
- 7.2.1场景切换相关函数
- 7.2.2场景过渡动画
- 7.3场景的生命周期
- 7.3.1生命周期函数
- 7.3.2多场景切换生命周期 [5]
- 第8章动作、特效和动画
- 8.1动作
- 8.1.1瞬时动作
- 8.1.2间隔动作
- 8.1.3组合动作
- 8.1.4动作速度控制
- 8.1.5函数调用
- 8.2特效
- 8.2.1网格动作
- 8.2.2实例: 特效演示
- 8.3动画
- 8.3.1帧动画
- 8.3.2实例: 帧动画使用
- 第9章用户事件
- 9.1事件处理机制
- 9.1.1事件分发器
- 9.1.2触摸事件
- 9.1.3实例: 单点触摸事件
- 9.1.4实例: 多点触摸事件
- 9.1.5键盘事件
- 9.2加速度计与加速度事件
- 9.2.1加速度计
- 9.2.2加速度计事件
- 9.2.3实例: 运动的小球
- 第二篇进阶篇
- 第10章游戏背景音乐与音效
- 10.1Cocos2dx Lua API中音频文件
- 10.1.1音频文件介绍
- 10.1.2Cocos2dx跨平台音频支持
- 10.2使用AudioEngine引擎
- 10.2.1音频文件的预处理
- 10.2.2播放背景音乐
- 10.2.3停止播放背景音乐
- 10.3实例: 设置背景音乐与音效
- 10.3.1GameScene场景实现
- 10.3.2SettingScene场景实现
- 第11章粒子系统
- 11.1问题的提出
- 11.2粒子系统基本概念
- 11.2.1实例: 打火机
- 11.2.2粒子发射模式
- 11.2.3粒子系统属性
- 11.3内置粒子系统
- 11.3.1内置粒子系统
- 11.3.2实例: 内置粒子系统
- 11.4自定义粒子系统
- 11.4.1代码创建
- 11.4.2plist文件创建
- 第12章瓦片地图
- 12.1地图性能问题
- 12.2瓦片地图API
- 12.3实例: 忍者无敌
- 12.3.1设计地图
- 12.3.2程序中加载地图
- 12.3.3移动精灵
- 12.3.4检测碰撞
- 12.3.5滚动地图
- 第13章物理引擎
- 13.1使用物理引擎
- 13.1.1物理引擎核心概念
- 13.1.2物理引擎与精灵关系
- 13.2Cocos2dx中物理引擎
- 13.2.1Cocos2dx物理引擎Lua API
- 13.2.2实例: HelloPhysicsWorld
- 13.2.3实例: 接触与碰撞检测
- 13.2.4实例: 使用关节
- 第14章Cocos2dx GUI控件
- 14.1按钮
- 14.2ImageView
- 14.3文本控件
- 14.3.1Text
- 14.3.2TextBMFont
- 14.3.3RichText
- 14.4RadioButton和RadioButtonGroup
- 14.5CheckBox
- 14.6LoadingBar
- 14.7滑块控件
- 第15章Cocos2dx中的3D特性
- 15.1一些3D概念
- 15.1.1网格和模型
- 15.1.2相机
- 15.1.3投影
- 15.2使用3D精灵
- 15.2.1创建Sprite3D对象
- 15.2.2实例: 使用模型和纹理Sprite3D对象
- 15.33D模型文件格式
- 15.4使用相机
- 15.4.1创建和设置Camera对象
- 15.4.2实例: 使用Camera对象
- 15.53D粒子系统
- 15.5.1创建PUParticleSystem3D对象
- 15.5.2实例: 创建Particle Universe 3D粒子
- 第三篇数据与网络篇
- 第16章文件访问操作和数据持久化
- 16.1使用FileUtils访问文件
- 16.1.1Cocos2dx Lua API中的目录
- 16.1.2实例: 读取文件
- 16.1.3实例: 路径搜索
- 16.2持久化概述
- 16.3UserDefault数据持久化
- 16.3.1UserDefault API
- 16.3.2实例: 保存背景音乐和音效设置
- 16.4属性列表数据持久化
- 16.4.1属性列表概述
- 16.4.2实例: 访问根为字典结构的属性列表文件
- 16.4.3实例: 访问根为列表结构的属性列表文件 [5]
- 第17章基于HTTP网络通信
- 17.1网络结构
- 17.1.1客户端服务器结构网络
- 17.1.2点对点结构网络
- 17.2HTTP与HTTPS协议
- 17.3使用XMLHttpRequest对象开发客户端
- 17.3.1使用XMLHttpRequest对象
- 17.3.2实例: MyNotes
- 17.4数据交换格式
- 17.5JSON数据交换格式
- 17.5.1文档结构
- 17.5.2JSON解码与编码
- 17.5.3实例: 完善MyNotes
- 第四篇优化篇
- 第19章性能优化
- 19.1合理使用缓存
- 19.1.1场景与资源
- 19.1.2缓存创建和清除时机
- 19.2图片与纹理优化
- 19.2.1选择图片格式
- 19.2.2拼图
- 19.2.3纹理像素格式
- 19.2.4纹理缓存异步加载
- 19.2.5背景图片优化
- 19.3声音优化
- 19.3.1声音格式优化
- 19.3.2声音预处理与清除
- 第五篇多平台移植篇
- 第20章移植到Android平台
- 20.1搭建交叉编译和打包环境
- 20.1.1Android SDK安装
- 20.1.2管理Android SDK
- 20.1.3管理Android开发模拟器
- 20.1.4Android NDK安装
- 20.1.5设置环境变量
- 20.2交叉编译、打包和运行
- 20.2.1使用cocos命令行工具
- 20.2.2Android.mk编译文件
- 20.3移植问题汇总
- 20.3.1Lua文件编译问题
- 20.3.2横屏与竖屏设置问题
- 第21章移植到iOS平台
- 21.1iOS开发环境搭建
- 21.1.1Xcode安装和卸载
- 21.1.2Xcode操作界面
- 21.2编译与运行
- 21.3移植问题汇总
- 21.3.1iOS平台声音移植问题
- 21.3.2使用PVR纹理格式
- 21.3.3横屏与竖屏设置问题
- 21.4多分辨率屏幕适配
- 21.4.1问题的提出
- 21.4.2Cocos2dx Lua API屏幕适配
- 21.4.3分辨率策略
- 21.4.4纹理图集资源适配
- 21.4.5瓦片地图资源适配
- 第六篇实战篇
- 第22章使用Git管理程序代码版本
- 22.1代码版本管理工具——Git
- 22.1.1版本控制历史
- 22.1.2术语和基本概念
- 22.1.3Git环境配置
- 22.1.4Git常用命令
- 22.2代码托管服务——GitHub
- 22.2.1创建和配置GitHub账号
- 22.2.2创建代码库
- 22.2.3删除代码库
- 22.2.4派生代码库
- 22.2.5GitHub协同开发
- 22.3实例: Cocos2dx游戏项目协同开发
- 22.3.1提交到GitHub代码库
- 22.3.2克隆GitHub代码库
- 22.3.3重新获得GitHub代码库
- 第23章Cocos2dx Lua API敏捷开发项目实战——迷失航线手机游戏
- 23.1迷失航线游戏分析与设计
- 23.1.1迷失航线故事背景
- 23.1.2需求分析
- 23.1.3原型设计
- 23.1.4游戏脚本
- 23.2任务1: 游戏工程的创建与初始化
- 23.2.1迭代1.1: 创建工程
- 23.2.2迭代1.2: 添加资源文件
- 23.2.3迭代1.3: 添加常量文件SystemConst.lua
- 23.2.4迭代1.4: 多分辨率支持
- 23.2.5迭代1.5: 发布到GitHub
- 23.3任务2: 创建Loading场景
- 23.3.1迭代2.1: 添加场景和层
- 23.3.2迭代2.2: Loading动画
- 23.3.3迭代2.3: 异步加载纹理缓存
- 23.4任务3: 创建Home场景
- 23.4.1迭代3.1: 添加场景和层
- 23.4.2迭代3.2: 添加菜单
- 23.5任务4: 创建设置场景
- 23.6任务5: 创建帮助场景
- 23.7任务6: 游戏场景实现
- 23.7.10迭代6.10: 显示玩家得分情况
- 23.8任务7: 游戏结束场景
- 24.2“最后一公里”
- 24.2.1Lua文件编译
- 24.2.2添加图标
- 24.2.3生成数字签名文件
- 24.2.4应用程序打包
- 24.3发布产品
- 24.3.1上传APK
- 24.3.2填写商品详细信息
- 24.3.3定价和发布范围
- 第25章把迷失航线游戏发布到苹果App Store应用商店
- 25.2“最后一公里”
- 25.2.1添加图标
- 25.2.2添加启动界面
- 25.2.3修改发布产品属性
- 25.3iOS设备测试
- 25.3.1Xcode设置
- 25.3.2设备设置
- 25.4为发布进行编译
- 25.4.1创建开发者证书
- 25.4.3创建描述文件
- 25.4.4发布编译
- 25.5发布上架
- 25.5.1创建应用
- 25.5.2应用定价
- 25.5.3基本信息输入
- 25.5.4上传应用
- 25.5.5提交审核
- 25.6常见审核通不过的原因
- 25.6.1功能问题
- 25.6.2用户界面问题
- 25.6.3商业问题
- 25.6.4不当内容
- 25.6.5其他问题