专题栏目:ARVRMR虚拟现实

《Unity5实战:使用C#和Unity开发多平台游戏》

书籍简介:

本书帮助读者使用Unity游戏开发平台构建成功的游戏。你将使用强大的C#语言、Unity的可视化工作流工具和*的渲染引擎来构建和部署移动、桌面和控制台游戏。Unity的单一基于代码的方式最小化了在开发工具间切换的影响,并将你的关注点集中在制作美妙的交互体验上。本书教授你如何编写和部署游戏。你将从头开始掌握Unity的工具集,书中介绍了从应用编码者到游戏开发者所需的技能。每个示例项目都阐述了特定的Unity特性和游戏开发策略。阅读完本书内容和完成书中练习后,你将掌握创建生动的基于2D和3D驱动的游戏应用的各方面技能。

作者简介:

Joseph Hocking是一位交互式媒体开发方面的软件工程师。他就职于Synapse Games公司并在芝加哥哥伦比亚学院教授游戏开发课程。

出版时间:

2016年06月

章节目录:

第Ⅰ部分 起 步
第1章 初识Unity 3
1.1 为什么Unity如此优秀 4
1.1.1Unity的优势 4
1.1.2要意识到的缺点 5
1.1.3使用Unity构建的游戏案例 6
1.2 如何使用Unity 9
1.2.1Scene视图、Game视图和工具栏 10
1.2.2使用鼠标和键盘 11
1.2.3Hierarchy标签和Inspector 12
1.2.4Project和Console标签 12
1.3 开始使用Unity编程 13
1.3.1代码在Unity中是如何运行的:脚本组件 14
1.3.2使用MonoDevelop,跨平台的IDE 15
1.3.3打印到控制台:Hello World! 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为了碰撞检测,移动CharacterController 38
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 基本漫游AI 52
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中调用LoadLevel 109
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编写不可见的UIController 120
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与Dictionary 170
8.4使用和装备物品的仓库UI 173
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解析XML 192
9.2.3解析JSON 193
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建立中心AudioManager 212
10.3.2音量控制UI 214
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再次利用项目来构建角色扮演RPG 228
11.1.1将多个项目的资源和代码装配在一起 228
11.1.2编写指向-单击的控件:移动和设备 231
11.1.3使用新界面替换旧GUI 235
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和Linux 259
12.1.1构建应用 259
12.1.2调整Player Settings:设置游戏的名称和图标 260
12.1.3平台依赖的编译 261
12.2为Web构建游戏 262
12.2.1Unity Player和HTML/WebGL 262
12.2.2构建Unity文件和一个测试Web页面 262
12.2.3与浏览器中的JavaScript通信 263
12.3构建移动应用的平台:iOS和Android 264
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.1Visual Studio 281
B.1.2Xcode 281
B.1.3Android SDK 282
B.1.4SVN、Git或Mercurial 282
B.23D美术应用 282
B.2.1Maya 282
B.2.23ds Max 282
B.2.3Blender 283
B.32D图像编辑器 283
B.3.1Photoshop 283
B.3.2GIMP 283
B.3.3TexturePacker 283
B.4 音频软件 283
B.4.1Pro Tools 284
B.4.2Audacity 284
附录C 在Blender中建模一个板凳 285
C.1 构建网格几何体 285
C.2 模型贴图映射 288
附录D 在线学习资源 293
D.1 附加的指南 293
D.2 代码库 294
后序 297

封面图:

发表评论

相关文章