咳咳,我的新书《Cocos2d-x3.x游戏开发之旅》快要出版了,预计是9月中旬。
预计这种事,可不能保证啊,说不定9月1号就出版了呢?
(小若:啊我呸,今天都9月2号了!)(
于2014.09.05补充说明:更准确的出版日期确定了,下周开始印刷流程,预计9月底能出现在各大网店。除非出现意外情况。)
这本书其实不是全新的内容,但是,又确实是全新的内容。
本书基于原《Cocos2d-x游戏开发之旅》的结构,升级为3.0版本,知识内容大部分是原来的,只是换成了3.0。
但是其实又不是原来的,因为很多文字描述都改了,只是看起来一定会很熟悉。
我知道,现在流行3.2版本,但我书上的内容其实没有什么区别,3.2版本在API上并没有什么大的改动。
另外,书上添加了不少3.0的新特性,以及网络游戏的入门介绍。
我看了,小满的书似乎也出了第二版,看了目录,我了个噗,我自己都被吸引了。
不过,我继续庆幸,我的书在内容上依旧没有和其他的书冲突。
个人认为,我的书比较适合学生,其实就是比较适合初学者了。
这也是我的初衷——写出能让所有人都看懂的教程。 好了,其实说了这么多吧,我就是想给我的新书做做宣传而已。
最后,附上封面,很帅,至少我是这么认为的~
最后的最后,谢谢【虫虫】和【杨雍】两位朋友的推荐语~!
..
差点忘记贴目录了,因为目录太长了,所以部分章节我就不贴了,主要贴出新增的内容~
第1章 开学典礼 / 1
第2章 不离不弃的HelloWorld / 12
2.1 简单到无法想象——直接运行HelloWorld项目 / 12
2.2 新建Cocos2d-x项目遇到的麻烦——成功新建一个HelloWorld / 14
2.3 HelloWorld,没有想象中的简单——简单解析HelloWorld / 16
2.4 实例来了 / 20
2.4.1 题外话——一个工程多个项目,避免重复编译 / 20
2.4.2 创建属于自己的HelloWorld / 23
第3章 我们来学习怎么爬行 / 28
3.1 环游世界——场景 / 28
3.2 一切的主宰——导演 / 29
3.3 你走你的,我走我的——层 / 35
3.4 比对象还要可爱的对象——精灵来了 / 36
3.5 我得下命令——菜单 / 37
3.6 当个背包客——节点 / 39
3.7 Cocos2d-x 3.0新成员——Value、Vector、Map / 40
3.7.1 有容乃大——Value / 41
3.7.2 给我排好队——Vector / 42
3.7.3 对号入座——Map / 44
3.7.4 Value的超能力——整数、浮点数、字符串之间的转换 / 46
第4章 我们来学习怎么走路 / 47
4.1 吉他独奏《天空之城》——播放声音 / 47
4.2 控件篇1——我最爱的九妹和按钮事件 / 48
4.2.1 你好,九妹——可拉伸图片 / 48
4.2.2 解决使用extensions库时编译报错的问题 / 49
4.2.3 九妹和按钮搭配 / 51
4.3 可视化的世界——Cocostudio UI编辑器 / 53
4.3.1 还在用代码写UI?你傻了吧 / 53
4.3.2 只需要拖动——UI编辑器初探 / 54
4.3.3 更丰富的UI——导入图片资源 / 56
4.3.4 更丰富的UI——导出最终文件 / 58
4.3.5 展示成果——在游戏中加载UI / 59
4.3.6 我要互动——按钮监听事件 / 62
4.4 番外篇——Cocostudio UI编辑器进阶功能 / 65
4.4.1 要死、要死、要死了之血量条 / 65
4.4.2 我要藏起来之滑动层 / 68
第5章 我们来学习怎么打架 / 72
5.1 动作讲解1——简简单单的运动 / 72
5.2 动作讲解2——更复杂的运动 / 79
5.3 动作讲解3——动作监听 / 84
5.3.1 小若,到家了告诉我一声——动作结束监听 / 84
5.3.2 更方便的函数回调——lambda / 85
5.3.3 动作家族族谱 / 88
5.4 屏幕触摸事件 / 89
5.4.1 屏幕事件初探 / 89
5.4.2 单点触摸——截断事件,一个对象的垄断 / 91
5.4.3 多点触摸——太弱了,一起上吧 / 94
第6章 是时候跑起来了——《LittleRunner》/ 99
第7章 精灵来了第二季 / 129
7.1 一大波精灵来袭——大量精灵单独绘制的缺陷 / 129
7.1.1 2.0的回忆——大量绘制精灵的尴尬 / 129
7.1.2 3.0新功能——Auto-batching / 130
7.1.3 没有完美的事物——Auto-batching“驾驭手册” / 131
7.1.4 谁先上的问题——setGlobalZOrder、setLocalZOrder、setOrderOfArrival / 134
7.1.5 附赠甜品——Auto-batching源码级深入分析 / 138
7.2 把相同的精灵装上车——使用SpriteBatchNode优化绘制 / 144
7.2.1 一次渲染——SpriteBatchNode的特别之处 / 144
7.2.2 什么是纹理——Texture简单解说 / 146
7.3 遇到不同的精灵怎么办——TexturePacker工具使用 / 147
7.4 是动画,不是动作——Animation / 152
第8章 游戏实例之《跑跑跑》/ 160
第9章 用多线程做定时器?你疯了——schedule很强大 / 191
9.1 我爱单线程——schedule介绍 / 191
9.2 每一帧都有我——scheduleUpdate和update / 191
9.3 定时器可以这么做——schedule和回调函数 / 193
9.3.1 不调用update函数,调用自己的函数 / 193
9.3.2 真正的定时器 / 194
9.4 让一切都停下来——unSchedule / 195
9.5 触发器可以这么做——scheduleOnce和回调函数 / 197
9.6 准确的计时功能——制作定时器 / 198
9.6.1 schedule并没有那么准时——越走越慢的时间 / 198
9.6.2 更准确地计时——不会变慢的时间 / 200
9.6.3 制作定时炸弹——方便的定时回调功能封装 / 203
9.7 额外赠送,我总是很关注我暗恋的女孩——观察者模式 / 205
9.7.1 你喜欢谁?我帮你留意——观察者模式扫盲 / 205
9.7.2 Cocos2d-x提供的观察者模式工具类——NotificationCenter / 206
9.7.3 addObserver和postNotification函数传递数据的区别 / 209
9.7.4 额外赠送——自己实现简单的观察者 / 211
第10章 野外生存训练 / 216
10.1 师父走了,你怎么办——学会查看官方Demo / 216
10.2 迟早都要学会——学习查看Demo源代码 / 217
10.3 别忘了开源——学习查看Cocos2d-x源代码 / 218
10.3.1 为什么addObserver和postNotification不能同时传递数据 / 218
10.4 物竞天择,没用的就要被淘汰——retain和release / 221
10.4.1 为什么会有retain / 221
10.4.2 真正的凶手autoRelease / 222
10.4.3 看代码实际点 / 222
10.4.4 原理来了 / 224
10.4.5 实际情况 / 225
10.4.6 倒底什么时候要retain / 225
10.5 什么?你忘了保存记忆?我们一起十年了啊——保存数据 / 226
10.6 我能摆脱编译的噩梦——读取Csv配置文件 / 227
10.6.1 什么是Csv文件——Csv格式文件扫盲 / 228
10.6.2 如何创建一个Csv文件 / 228
10.6.3 预热——编写字符串工具类 / 229
10.6.4 一切都是对象——Csv文件对象类 / 231
10.6.5 进入主题——编写Csv文件读取工具类 / 233
10.7 再给编译噩梦粉碎一击——更方便扩展的Json / 238
10.7.1 JSON又是什么?——基础扫盲 / 238
10.7.2 拿好你的武器——导入JsonCpp解析库 / 239
10.7.3 就是这么简单——读取JSON文件 / 241
10.7.4 进阶挑战——读取嵌套结构的JSON文件 / 242
10.7.5 进阶挑战——读取数组结构的JSON文件 / 243
10.7.6 进阶挑战——输出JSON文件 / 244
第11章 睡觉的时候不要吃东西——有限状态机 / 247
第12章 我比Csv更厉害——强大的Lua / 269
第13章 自力更生——自己写一个UI模块 / 285
第14章 倾情奉献——因为偷懒而诞生的《卡牌塔防》游戏(上篇)/ 329
第15章 倾情奉献——因为偷懒而诞生的《卡牌塔防》游戏(下篇)/ 372
第16章 倾情奉献——因为偷懒而诞生的《卡牌塔防》游戏(终结篇)/ 428
第17章 我不要一个人玩游戏——网络游戏入门 / 460
17.1 只能给你一块敲门砖——本章带给大家的内容 / 460
17.2 左手画方右手画圆——多线程 / 461
17.3 从最简单的开始——从建立连接到接收数据 / 464
17.3.1 偷偷和别人连接——使用ODSocket与服务器建立连接 / 465
17.3.2 不务正业——编写一个测试服务端 / 467
17.3.3 言归正传——编写我们的Cocos2d-x客户端 / 469
17.4 你得真的像个网游——服务端与客户端交互逻辑 / 471
17.4.1 逃避多线程——更安全的数据接收处理 / 471
17.4.2 进入游戏——服务端通知客户端进入游戏场景 / 476
17.4.3 更多的人——请求在线人数,添加所有玩家到场景中 / 480
17.4.4 新人要报到——有新玩家加入,通知已在线玩家 / 484
第18章 额外的一些东西 / 486
18.1 常见错误及解决方案 / 486
18.1.1 调用可变参数函数时,总是莫名报错 / 486
18.1.2 无法解析的外部符号(或命令) / 486
18.1.3 Android移植编译报错——undefined reference to / 487
18.1.4 Label变成了一个黑块——多线程引起的Bug / 487
18.1.5 中断窗口 / 487
18.1.6 重复切换场景后无端报错 / 488
18.2 游戏发布流程(概述) / 489
18.2.1 给游戏加入广告SDK / 489
18.2.2 加入统计SDK / 490
18.2.3 上传游戏到各个市场 / 491
18.3 未来的趋势 / 492
18.3.1 云后端服务 / 492
18.3.2 社交SDK / 492
18.3.3 Cocos Code IDE / 493
18.3.4 Cocostudio / 493
18.4 安全意识 / 493
18.4.1 加密的数据类型,拒绝游戏修改器 / 494
18.4.2 防止打包党的一些小技巧 / 495
18.5 游戏开发思维 / 497
18.5.1 不管游戏多快,一帧就是一帧,我们能做很多事情 / 497
18.5.2 随机应变,利用不经意的Bug创造更多玩法 / 497
18.6 最后的最后 / 498
18.6.1 最快速找到木头的方式 / 498
18.6.2 给读者的惊喜——丁小若寄语 / 499
18.6.3 请提供你的意见和你发现的Bug / 499