Unity入门经典
引用完整示例项目,快速掌握Unity游戏开发平台
免费提供书中所有源代码
熟练掌握基于2D和3D驱动的游戏技能
涵盖Unity5.0
本书帮助读者使用Unity游戏开发平台构建成功的游戏。 你将使用强大的C#语言、Unity的可视化工作流工具和的渲染引擎来构建和部署移动、桌面和控制台游戏。Unity的单一基于代码的方式小化了在开发工具间切换的影响,并将你的关注点集中在制作美妙的交互体验上。 本书教授你如何编写和部署游戏。你将从头开始掌握Unity的工具集,书中介绍了从应用编码者到游戏开发者所需的技能。每个示例项目都阐述了特定的Unity特性和游戏开发策略。阅读完本书内容和完成书中练习后,你将掌握创建生动的基于2D和3D驱动的游戏应用的各方面技能。 主要内容 ◆ 编写跑动、跳跃和交互的角色 ◆ 构建管理游戏状态的代码架构 ◆ 将游戏连接到互联网以下载动态数据 ◆ 将游戏部署到平台(包括网页和移动等) ◆ 涵盖Unity 5.0
第Ⅰ部分起步
第1章初识Unity3
1.1为什么Unity如此优秀4
1.1.1Unity的优势4
1.1.2要意识到的缺点5
1.1.3使用Unity构建的游戏案例6
1.2如何使用Unity9
1.2.1Scene视图、Game视图和工具栏10
1.2.2使用鼠标和键盘11
1.2.3Hierarchy标签和Inspector12
1.2.4Project和Console标签12
1.3开始使用Unity编程13
1.3.1代码在Unity中是如何运行的:脚本组件14
1.3.2使用MonoDevelop,跨平台的IDE15
1.3.3打印到控制台:HelloWorld!16
1.4小结18
第2章构建一个让你置身3D空间的演示19
2.1在开始之前20
2.1.1对项目做计划20
2.1.2了解3D坐标空间21
2.2开始项目:在场景中放置对象22
2.2.1第二步:地板、外墙和内墙22
2.2.2灯光和摄像机25
2.2.3玩家的碰撞器和视口26
2.3让东西移动:应用变换的脚本27
2.3.1图示说明如何通过编程实现旋转27
2.3.2编写代码实现图中演示的运动27
2.3.3本地和全局坐标空间29
2.4用于观察周围的组件脚本:MouseLook30
2.4.1跟踪鼠标运动的水平旋转31
2.4.2在一定范围内的垂直旋转32
2.4.3同时水平和垂直旋转33
2.5键盘输入组件:第一人称控件36
2.5.1响应按下的键36
2.5.2设置独立于计算机运行速度的运动速率37
2.5.3为了碰撞检测,移动CharacterController38
2.5.4调整组件为走路而不是飞翔39
2.6小结41
第3章为3D游戏添加敌人和子弹43
3.1通过射线射击44
3.1.1什么是射线发射44
3.1.2使用命令ScreenPointToRay来发射45
3.1.3为准心和击中点添加可视化提示46
3.2脚本化反应的目标49
3.2.1确定被击中的对象49
3.2.2警告目标它被击中50
3.3基本漫游AI52
3.3.1图解基础AI的工作原理52
3.3.2使用射线发射发现障碍物52
3.3.3跟踪角色状态54
3.4产生敌人预设55
3.4.1什么是预设55
3.4.2创建敌人预设56
3.4.3在不可见的SceneController中实例化57
3.5通过实例化对象进行射击59
3.5.1创建子弹预设59
3.5.2发射子弹并和目标碰撞60
3.5.3伤害玩家63
3.6小结63
第4章为游戏开发图形65
4.1了解美术资源65
4.2构建基础3D场景:白盒67
4.2.1白盒的解释68
4.2.2为关卡绘制地板平面图68
4.2.3根据平面图布局几何体69
4.3使用2D图像给场景贴图70
4.3.1选择文件格式71
4.3.2导入图像文件72
4.3.3应用图像73
4.4使用贴图图像产生天空视觉效果75
4.4.1什么是天空盒75
4.4.2创建一个新天空盒材质76
4.5使用自定义3D模型77
4.5.1选择文件格式78
4.5.2导出和导入模型79
4.6使用粒子系统创建效果81
4.6.1调整默认效果的参数82
4.6.2为火焰应用新贴图83
4.6.3将粒子效果附加到3D对象上84
4.7小结85
第Ⅱ部分轻松工作
第5章使用Unity新的2D功能构建一款记忆力游戏89
5.1设置2D图形90
5.1.1为项目做准备90
5.1.2显示2D图像(亦称精灵)92
5.1.3将摄像机切换为2D模式94
5.2构建卡片对象并让它响应单击95
5.2.1从精灵构建对象95
5.2.2鼠标输入代码96
5.2.3当单击时显示卡片96
5.3显示不同的卡片图像97
5.3.1通过程序加载图像97
5.3.2通过不可见的SceneController来设置图像98
5.3.3实例化一个网格的卡片100
5.3.4打乱卡片101
5.4实现匹配和匹配得分103
5.4.1保存并比较翻开的卡片104
5.4.2隐藏错误卡片104
5.4.3显示积分的文本105
5.5重启按钮106
5.5.1使用SendMessage编写UIButton组件107
5.5.2从SceneController中调用LoadLevel109
5.6小结110
第6章在3D游戏中放置2D图形用户界面111
6.1在开始写代码之前......112
6.1.1直接模式GUI还是高级2D界面112
6.1.2规划布局113
6.1.3导入UI图像114
6.2设置GUI显示114
6.2.1为界面创建画布115
6.2.2按钮、图像和文本标签116
6.2.3控制UI元素的位置118
6.3编写UI中的交互119
6.3.1编写不可见的UIController120
6.3.2创建弹出窗口121
6.3.3使用滑动条和输入域设置值124
6.4通过响应事件更新游戏126
6.4.1集成事件系统127
6.4.2从场景中广播和侦听事件127
6.4.3从HUD广播和侦听事件128
6.5小结130
第7章创建第三人称3D游戏:玩家移动和动画131
7.1调整摄像机视图为第三人称视角133
7.1.1导入一个用于观察的角色133
7.1.2将阴影添加到场景134
7.1.3摄像机环绕玩家角色135
7.2编写程序控制camera-relative的移动137
7.2.1旋转角色,以朝向移动方向138
7.2.2朝着方向向前移动140
7.3实现跳跃动作141
7.3.1应用垂直速度和加速度142
7.3.2修改地面检测来处理边缘和斜坡143
7.4设置玩家角色上的动画146
7.4.1在导入的模型上定义动画剪辑148
7.4.2为动画创建动画控制器149
7.4.3编写操作Animator组件的代码153
7.5小结154
第8章在游戏中添加交互设施和物件155
8.1创建门和其他设施156
8.1.1由按键控制开/关的门156
8.1.2在开门之前检查距离和朝向157
8.1.3创建一个变色监控器159
8.2通过碰撞与对象交互160
8.2.1和具有物理功能的障碍物碰撞160
8.2.2用一个压力板来触发门161
8.2.3收集当前关卡游戏中分散的物件163
8.3管理仓库数据和游戏状态165
8.3.1设置玩家和仓库管理器165
8.3.2编程实现游戏管理器166
8.3.3把物品存储在集合对象中:List与Dictionary170
8.4使用和装备物品的仓库UI173
8.4.1在UI中显示仓库物品173
8.4.2装备一个用来开门的钥匙175
8.4.3通过使用血量包来恢复玩家的血量177
8.5小结178
第Ⅲ部分冲刺阶段
第9章将游戏连接到互联网181
9.1创建户外场景182
9.1.1使用天空盒生成天空视觉效果182
9.1.2通过代码设置大气环境183
9.2从互联网服务下载天气数据185
9.2.1使用协程请求WWW数据188
9.2.2解析XML192
9.2.3解析JSON193
9.2.4基于天气数据影响场景195
9.3添加一个网络布告栏196
9.3.1从互联网加载图像196
9.3.2在布告栏上显示图像199
9.3.3缓存下载的图像以供重用200
9.4将数据发送到Web服务器201
9.4.1跟踪当前的天气:发送post请求202
9.4.2PHP中的服务器端代码204
9.5小结204
第10章播放音频:音效和音乐205
10.1导入音效206
10.1.1所支持的文件格式206
10.1.2导入音频文件207
10.2播放音效208
10.2.1音频剪辑、音源和声音侦听器208
10.2.2设定一个循环声音209
10.2.3从代码触发音效210
10.3音频控制接口211
10.3.1建立中心AudioManager212
10.3.2音量控制UI214
10.3.3播放UI声音217
10.4背景音乐218
10.4.1播放循环音乐218
10.4.2独立控制音乐的音量221
10.4.3歌曲间的淡入淡出223
10.5小结226
第11章将各部分整合为一个完整的游戏227
11.1再次利用项目来构建角色扮演RPG228
11.1.1将多个项目的资源和代码装配在一起228
11.1.2编写指向-单击的控件:移动和设备231
11.1.3使用新界面替换旧GUI235
11.2开发总体的游戏结构241
11.2.1控制任务流和多关卡242
11.2.2通过到达退出条件完成一个关卡245
11.2.3当被敌人捕捉时关卡失败247
11.3处理玩家游戏过程中的进度249
11.3.1保存并加载玩家进度249
11.3.2通过完成三个关卡打败游戏253
11.4小结255
第12章将游戏部署到玩家的设备255
12.1构建桌面环境:Windows、Mac和Linux259
12.1.1构建应用259
12.1.2调整PlayerSettings:设置游戏的名称和图标260
12.1.3平台依赖的编译261
12.2为Web构建游戏262
12.2.1UnityPlayer和HTML/WebGL262
12.2.2构建Unity文件和一个测试Web页面262
12.2.3与浏览器中的JavaScript通信263
12.3构建移动应用的平台:iOS和Android264
12.3.1设置构建工具265
12.3.2贴图压缩268
12.3.3开发插件269
12.4小结277
附录A场景导航和键盘快捷键279
A.1使用鼠标进行场景导航279
A.2一般使用键盘快捷键280
附录B与Unity一同使用的外部工具281
B.1编程工具281
B.1.1VisualStudio281
B.1.2Xcode281
B.1.3AndroidSDK282
B.1.4SVN、Git或Mercurial282
B.23D美术应用282
B.2.1Maya282
B.2.23dsMax282
B.2.3Blender283
B.32D图像编辑器283
B.3.1Photoshop283
B.3.2GIMP283
B.3.3TexturePacker283
B.4音频软件283
B.4.1ProTools284
B.4.2Audacity284
附录C在Blender中建模一个板凳285
C.1构建网格几何体285
C.2模型贴图映射288
附录D在线学习资源293
D.1附加的指南293
D.2代码库294
后序297