Unity官方案例精讲
书 号:9787113202354
丛 书 名:
作 者:Unity Technologies[优美缔软件(上海)有限公司]
译 者:
开 本:大16
装 帧:平装
正文语种:
出 版 社:中国铁道出版社有限公司
定 价:96元
-
内容简介
作为Unity引擎的辅助学习资料,Unity公司提供了大量的官方示例和演示程序供开发者参考,这些程序示例涵盖了各个主要游戏类型的程序架构,以及Unity引擎本身的几乎所有重要功能,极富参考价值。可惜的是,Unity公司在提供这些程序示例的同时,并没有给出相应的详细文字讲解和说明。本书即从这些示例中精心挑选了若干个具有代表性的实例进行详细讲解,在每个实例中都重点切入一个或几个Unity引擎的核心功能点,进而以接近于现场教学的方式,引导读者一边阅读、一边动手,通过实际操作来掌握学习内容。在讲解过程中,本书还对与Unity编程相关的重要知识加以特别关注和讲解,使读者在实践中深刻理解Unity引擎的原理和使用方法,真正做到融会贯通。 -
前言
前言
从Unity Technologies在2005年发布Unity 1.0版本,到2015年3月3日在GDC 2015上隆重推出Unity 5.0版本,已然过去了10年。在这十年间,IT技术风起云涌,游戏开发平台也从早期的桌面单机、游戏主机延伸到了PC互联网,以及如今如火如荼的移动互联网,Unity引擎亦随之演进成为一个跨平台的、高度整合的、方便易用的集成开发环境,成为同类软件产品中的佼佼者。
近年来,国内的开发者一直通过各种途径来学习Unity开发技术,有关Unity开发的书籍也由最初的凤毛麟角发展到而今的俯拾皆是,其中包括国外引进翻译的,也包括国内技术人员总结编写的,但其中专门针对开发案例进行讲解的书籍却一直很少见。
在学习Unity的众多材料中,官方文档和官方案例是其中不可替代的精品,其作用不亚于学习Windows编程时MSDN的作用。若能将官方案例抽丝剥茧,一步步完整地呈现出来,并对其中关键处予以重点讲解,想必会对Unity学习者大有裨益。为此,编者就在本书中精心遴选了11个官方案例来进行讲解,这些案例大多源自于Unity每次发布新版本时的演示案例,涵盖了Unity项目实战中的诸多“套路”,囊括了Unity引擎的所有核心功能。
在本书编写过程中,其思路是一章只讲解一个案例、一个案例只着重讲解一个知识点,力争把每个知识点讲清讲透;在具体行文时,竭力避免“空话套话”,争取多出“干货”,同时也遵循“一图胜千言”的宗旨,能用图表表达清楚的原理就用图表来说明。另一方面,为了照顾刚入门的读者,在每一章中都从零开始创建工程,经过一步步的近乎于现场教学式的讲解,最终引领读者创建出一个与官方案例功能类似的游戏;为了突出各章的重点,对案例中与前面章节重复或与该章主旨关系不大的知识点进行了删减,读者在阅读时可以交叉参考,加深理解。
以下是全书每一章的知识梗概,可便于读者快速了解全书的内容:
第1章:介绍了Unity C#脚本语言的语法和Unity中的常用类、协程、脚本执行顺序等。
第2章:介绍Unity JavaScript脚本语言的语法和示例。
第3章:通过对Space Shooter案例的详尽剖析,介绍了一个完整的Unity游戏的创建过程。
第4章:基于潜行游戏案例Stealth介绍了角色与环境、角色与敌人交互的控制逻辑。
第5章:基于案例Particle Callbacks介绍了Shuriken粒子系统的创建和使用方法,着重讲解了粒子碰撞回调函数的使用方法。
第6章:基于案例Mecanim Example Scenes中的5个场景,讲解了Mecanim动画系统的基本概念和基础功能,如运动状态机(Locomotion state machines)、人群模拟(Crowd simulations)、多层IK绑定(Multi-layer IK rigs)、武器绑定(weapon handing)、导航网格寻路(Navmesh)等。
第7章:基于Mecanim GDC2013 Sample Project案例介绍了Mecanim中的高级功能,如二维混合树(2D Blend Tree)、同步动画层(Synced layers)、多IK通道(Multiple IK passes)以及动画录制与回放(animation recording & playback)等。
第8章:基于Star Trooper案例介绍了Unity中与移动设备输入控制相关的API和实例。
第9章:通过对Character Customization案例的分析,介绍了打包换装部件、加载换装部件的方法,重点讲解了与Asset Bundles操作相关的知识点。
第10章:主要介绍了Unity中与第三人称游戏相关的摄像机和角色运动控制方法。
第11章:基于Car Tutorial案例介绍了赛车类游戏的开发方法,重点介绍了Wheel Collider的用法。
第12章:基于2D Platformer案例介绍了2D游戏的开发方法,重点讲解了Sprite和2D Collider的用法。
第13章:基于Nightmares案例介绍了uGUI的用法。
对以上每章中的案例,在随书光盘中都提供了对应的完整代码。事实上,任何编程能力的提升都应是实践多于理论,在此建议读者打开Unity编辑器,一步步跟着书中的讲解进行练习。
在Unity版本的选择上,由于本书定稿时Unity 5.0尚未正式发布,除了第11章之外,编者都在Unity 5.0的64位测试版上进行了测试。而第11章是基于Unity 4.6版本完成测试的,这是因为Unity 5.0针对赛车类游戏采用了新的Vehicle SDK并对WheelCollider组件进行了更新,但Car Tutorial案例中的资源包并未随之及时更新,因而无法在Unity 5.0测试版中正常运行。
本书适用于游戏从业开发者、大中院校计算机专业的学生以及其他对游戏开发感兴趣的读者。具备C#或JavaScript等语言的开发背景会有助于理解书中的内容,但这并不是必须的,读者可以参考本书第1、2章了解必要的理论知识。为了更好地理解书中的3D数学知识,建议读者阅读相关的3D数学专著。
从本书开始编写时,便秉承“用心出精品”的精神,力争在有限的篇幅内最大限度地呈现出对读者有用的“干货”,期望能引导读者走向学习Unity的捷径。尽管编者对书稿进行了反复校对和审核,但限于时间和精力,书中的疏漏在所难免,希望读者在阅读过程中给予批评指正。针对阅读时发现的错误和问题,读者可以发邮件到unitycn@qq.com进行反馈,编者将适时整理出一份勘误表,以便再版时更正。
本书由Unity Technologies主编,刘钢、孙文涛执笔。本书从最初开始编写到结稿历时将近一年,写作过程占据了作者绝大部分的业余时间,因此本书的出版离不开编者家人的默默支持,在此谨向他们表示诚挚的感谢!同时,也感谢出版社编辑反复细致的校对工作,是他们的辛勤工作保证了本书的顺利出版!
最后,祝愿各位读者Happy Reading,Happy Coding!
编者 刘钢 孙文涛
2015年2月于上海 -
目录
目 录
第 1 章 C# 脚本编程基础 ................... 1
1.1 配置脚本开发环境 ......................................2
1.1.1 配置 Visual Studio .........................2
1.1.2 配置 MonoDevelop ........................6
1.1.3 脚本的创建 ...................................8
1.2 变量、数组与函数 ......................................9
1.2.1 变量的声明与使用 ........................9
1.2.2 数组的声明与使用 ......................11
1.2.3 函数的声明与使用 ......................12
1.3 语句、表达式与运算符 ......................... 14
1.3.1 语句 ..............................................14
1.3.2 表达式 ..........................................16
1.3.3 运算符 ..........................................16
1.4 协程(Coroutine) ..................................... 18
1.5 类与类的使用 ............................................. 21
1.6 输出调试信息 ............................................. 22
1.7 C# 脚本示例 ................................................ 22
1.8 Unity 脚本事件执行顺序 ....................... 26
1.9 脚本模板与脚本编码 .............................. 28
1.10 Unity 5 脚本升级 .................................... 29
第 2 章 JavaScript 脚本编程基础 ..... 31
2.1 JavaScript 脚本编程基础 ....................... 32
2.2 变量、数组与函数 ................................... 32
2.2.1 变量 ..............................................32
2.2.2 数组 ..............................................33
2.2.3 函数 ..............................................35
2.3 表达式、语句与运算符 ......................... 37
2.4 JavaScript 脚本示例 ................................. 39
2.5 JavaScript 脚本与 C# 脚本的交互 ...... 41
第 3 章 星际航行游戏——JSpace Shooter .................. 45
3.1 导入模型、贴图和材质 ......................... 46
3.1.1 导入资源包文件 ..........................46
3.1.2 创建飞船对象 ..............................49
3.1.3 设置摄像机参数 ..........................50
3.1.4 添加图片背景 ..............................50
3.1.5 添加粒子背景效果 ......................52
3.2 编写脚本代码 ............................................. 53
3.2.1 键盘控制飞船移动 ......................53
3.2.2 实现射击行为(Shot) ................57
3.2.3 添加小行星(Asteroid) ..............61
3.3 添加音频 ......................................................
69
3.3.1 添加碰撞爆炸音频 ......................69
3.3.2 添加飞船射击音频 ......................69
3.3.3 添加背景音效 ..............................70
3.4 添加计分文本 ............................................. 71
3.4.1 添加计分 Text 组件 .....................71
3.4.2 添加计分功能 ..............................72
3.5 游戏结束与重新开始 .............................. 74
3.5.1 添加游戏结束的 Text 组件 .........74
3.5.2 添加结束游戏的功能 ..................75
3.5.3 添加重新开始的 Text 组件 .........76
3.5.4 添加重新开始游戏的功能 ..........77
第 4 章 潜行游戏——Stealth ........... 79
4.1 加载场景 ................................................... 80
4.1.1 创建场景 ......................................80
4.1.2 添加场景元素 ..............................80
4.1.3 添加灯光 ......................................82
4.1.4 烘焙场景 Lightmaps ....................84
4.1.5 添加 Tag 管理类 ..........................87
4.1.6 添加转场效果 ..............................87
4.1.7 添加游戏控制器GameController ............................89
4.1.8 添加 CCTV Camera .....................92
4.1.9 添加 Laser Grid ............................94
4.2 导入和配置人物角色 .............................. 97
4.2.1 导入角色模型 ..............................97
4.2.2 设置角色动画 ..............................98
4.2.3 创建动画参数管理类 ..................99
4.2.4 添加控制角色运动功能 ............101
4.2.5 添加控制摄像机跟随的功能 ....104
4.3 主角与环境交互 ......................................107
4.3.1 添加控制开关台的功能 ............107
4.3.2 添加管理房间钥匙卡的功能 ....110
4.3.3 添加控制单开门的功能 ............112
4.3.4 添加控制双开门的功能 ............115
4.4 主角与敌人交互 ......................................116
4.4.1 添加管理角色生命值的功能 ....116
4.4.2 添加敌人角色模型 ....................118
4.4.3 添加敌人自动搜索角色的功能 ..............................120
4.4.4 添加控制敌人运动功能 ............123
4.4.5 添加控制敌人射击的功能 ........126
第 5 章 粒子碰撞回调功能——Particle Callbacks .............. 129
5.1 Shuriken 粒子系统介绍 ........................130
5.2 加载场景 ....................................................131
5.3 创建粒子效果 ...........................................134
5.3.1 创建燃烧时冒烟的粒子效果 .....134
5.3.2 创建燃烧时火星四溅的粒子效果 ...............................139
5.3.3 火焰大小控制 ............................140
5.3.4 创建洒水的粒子效果 ................143
5.3.5 控制洒水位置 ............................146
5.4 碰撞回调函数解析 .................................148
5.5 粒子碰撞回调函数应用案例 ..............153
5.5.1 水滴与桶盖碰撞的处理 ............153
5.5.2 实现水滴与燃烧桶碰撞熄灭火焰的效果 .........................155
第 6 章Mecanim 动画系统介绍——Mecanim Example Scenes ..... 159
6.1 Mecanim 动画系统简介 .......................160
6.1.1 Mecanim 动画系统的工作流 ....160
6.1.2 Mecanim 动画系统中的术语 ....160
6.2 Mecanim 动画系统常用 API 介绍 ....162
6.2.1 与动画状态控制相关的 API ......162
6.2.2 Character Controller(角色控制器) .........................163
6.3 加载场景 ....................................................164
6.4 Animator Controller 场景 .....................165
6.4.1 创建场景 ....................................166
6.4.2 创建动画控制器 ........................167
6.4.3 角色运动控制 ............................169
6.4.4 摄像机运动控制 ........................171
6.4.5 添加提示文字 ............................173
6.5 Crowd Simulation 场景 .........................174
6.5.1 创建场景 ....................................174
6.5.2 创建动画控制器 ........................175
6.5.3 生成人群 ....................................176
6.5.4 控制人群随机运动 ....................177
6.6 Inverse Kinematics Example 场景 .....179
6.6.1 创建场景 ....................................179
6.6.2 IK 功能实现 ...............................180
6.7 Teddy Bear Bazooka 场景 .....................183
6.7.1 创建场景与动画控制器 ............183
6.7.2 Taddy 对象随机运动的控制 .....185
6.7.3 抬放火箭炮控制 ........................187
6.7.4 射击的控制 ................................191
6.8 Nav Mesh Example 场景 .......................192
6.8.1 创建场景 ....................................192
6.8.2 创建动画控制器 ........................194
6.8.3 创建导航网格 ............................198
6.8.4 导航网格的寻路实现 ................199
第 7 章Mecanim 系统高级课程——Mecanim GDC2013 Sample Project .. 205
7.1 加载场景 ....................................................206
7.1.1 创建场景 ....................................206
7.1.2 添加地板(Floor)和障碍物
(Obstacles) .................................206
7.1.3 添加圆木(Log)与冰棒
(Popsicle) ...................................208
7.1.4 添加角色(Player) ....................211
7.1.5 添加非玩家角色 ........................217
7.1.6 添加子弹对象(Bullet) ............220
7.2 角色运动的控制 ......................................220
7.2.1 由方向键控制角色运动 ............220
7.2.2 摄像机移动的控制 ....................223
7.2.3 实现角色 Slide、Vault 的动作 .224
7.2.4 实现角色抱着圆木运动 ............228
7.2.5 角色从边界掉落的控制 ............232
7.3 NPC 巡逻与攻击的控制 .......................233
7.3.1 NPC 巡逻的控制 .......................233
7.3.2 NPC 攻击的控制 .......................235
7.4 角色受伤的控制 ......................................240
7.5 动画录制与回放 ......................................243
第 8 章 移动设备输入控制——Star Trooper................ 249
8.1 加载场景 ....................................................250
8.1.1 创建场景 ....................................250
8.1.2 修改工程配置 ............................251
8.1.3 添加模型 ....................................253
8.1.4 添加旋转 SunRing 对象的
功能 .............................................255
8.2 使用加速度计控制速度 .......................255
8.2.1 移动设备输入控制的 API ........255
8.2.2 飞船运动控制 ............................258
8.3 使用触摸屏控制射击 ...................260
8.4 摄相机跟随控制 ...........................262
第 9 章 人物换装——Character Customization .................... 267
9.1 加载场景 ....................................................268
9.1.1 创建场景 ....................................268
9.1.2 添加场景元素 ............................269
9.2 AssetBundle 相关 API 介绍 .................270
9.3 打包换装部件 ...............................273
9.3.1 创建角色生成器插件 ................273
9.3.2 创建角色换装的基础AssetBundle ...............................276
9.3.3 创建角色肢体部件的AssetBundle ...............................278
9.3.4 创建材质与角色肢体部件AssetBundle 的映射关系 ...........281
9.4 加载换装部件 ...........................................287
9.4.1 角色生成器类CharacterGenerator .....................287
9.4.2 角色生成框架 ............................295
9.4.3 换装控制界面 ............................297
第 10 章 第三人称射击游戏——Third Person MMO Controller ........301
10.1 加载场景 ..................................................302
10.2 添加场景元素 ........................................302
10.2.1 添加背景元素 ..........................302
10.2.2 添加主角模型 ..........................303
10.2.3 添加 NPC 模型 ........................304
10.3 第三人称角色运动的控制 ................305
10.3.1 添加控制角色运动的功能 ......305
10.3.2 添加控制角色动画的功能 ......311
10.4 摄像机运动控制 ...................................317
10.5 NPC 对象标签显示 ..............................323
第 11 章 赛车游戏——Car Tutorial .... 327
11.1 加载场景 ..................................................328
11.1.1 创建场景 ..................................328
11.1.2 场景元素介绍 ..........................329
11.2 加载赛车资源 ........................................331
11.2.1 载入赛车模型 ..........................331
11.2.2 设置赛车阴影效果 ..................332
11.2.3 摄像机的移动控制 ..................333
11.3 赛车控制 ..................................................335
11.3.1 为赛车添加 WheelCollider .....335
11.3.2 赛车前进与转弯的控制 ..........337
11.3.3 赛车车轮转动与转向效果实现 ..................................341
11.3.4 赛车倒车与刹车效果实现 ......342
11.3.5 赛车档位的控制 ......................348
11.4 物理交互 ..................................................350
11.4.1 赛车碰撞后翻车效果的实现 ..350
11.4.2 实现赛车行驶中刹车时滑痕
的效果 ......................................352
第 12 章 原生 2D 系统游戏——2D Platformer ....... 357
12.1 加载场景 ..................................................358
12.1.1 创建场景 ..................................358
12.1.2 添加场景元素 ..........................359
12.2 创建 Swan(天鹅)动画 ..................363
12.2.1 生成天鹅多个的飞行姿态 ......364
12.2.2 创建 Sprite Animation .............365
12.2.3 天鹅随机飞动的实现 ..............366
12.3 创建 Mr. Bean(小豆人)动画 .......369
12.3.1 创建 Mr.Bean 对象 ..................369
12.3.2 为 Mr.Bean 添加动画控制器 ..370
12.4 添加 2D 物理碰撞功能 ......................372
12.4.1 为主角和前景元素添加 2D 物理碰撞功能 ........................372
12.4.2 添加 2D 物理碰撞中的注意事项 ...............................374
12.5 游戏操控 ..................................................375
12.5.1 主角运动的控制 ......................375
12.5.2 主角射击的控制 ......................378
12.5.3 主角与敌人对象交互的功能 ..379
12.5.4 游戏暂停的控制 ......................382
第 13 章 新 uGUI 系 统 应 用 案 例 ——Nightmares................. 383
13.1 新 uGUI 系统介绍 ................................384
13.2 加载场景 ..................................................388
13.2.1 创建场景 ..................................388
13.2.2 添加角色对象 ..........................389
13.2.3 添加控制角色运动功能 ..........390
13.2.4 配置摄像机参数 ......................393
13.2.5 创建敌人对象 ..........................395
13.3 角色生命值管理 ...................................397
13.3.1 创建生命状态的 GUI 元素 .....397
13.3.2 角色生命值管理 ......................401
13.4 角色射击和敌人生命值管理 ...........403
13.4.1 角色射击的实现 ......................403
13.4.2 敌人生命值管理 ......................406
13.5 游戏分值的显示与敌人对象的动态创建.............408
13.5.1 游戏分值显示 ..........................408
13.5.2 敌人对象的动态创建 ..............409
13.6 结束游戏 ..............................................412 -
作者介绍
刘钢:男,理学博士,Unity Technologies大中华区技术总监。2004年毕业于浙江大学CAD&CG国家重点实验室,之后从事过GPU设计、3D图形引擎研发、游戏引擎研发等相关工作,并实际参与了多款PC和移动平台上MMO游戏项目的技术指导工作。近几年来,他一直专注于Untiy引擎在大中华区的技术研发、支持和推广工作。
孙文涛:男,毕业于武汉大学,曾就职于Autodesk上海研发中心、Intergraph中国研发中心、Altium上海研发中心等,历任软件工程师、高级软件工程师、软件开发主管等职。自2009年起学习并使用Unity,开发了多个基于Unity引擎的虚拟现实项目,同时也是“Unity之家”(www.unitycn.cn)的站长。 -
编辑推荐
Unity 是全球首屈一指的开发平台,从建立至今已有十年。Unity 的十年也是游戏行业极速发展的十年。从开始的红白机、主机游戏时代,到客户端游戏叱咤风云的端游时代,再到网页游戏崭露头角,移动游戏一骑绝尘的这几年,Unity一直用不断完善的引擎开发技术和服务,引领着全球3D游戏行业的发展。在学习Unity的众多材料中,官方文档和官方案例是其中不可替代的精品,其作用不亚于学习Windows编程时MSDN的作用。若能将官方案例抽丝剥茧,一步步完整地呈现出来,并对其中关键处予以重点讲解,想必会对Unity学习者大有裨益。为此,编者就在本书中精心遴选了11个官方案例来进行讲解,这些案例大多源自于Unity每次发布新版本时的演示案例,涵盖了Unity项目实战中的诸多“套路”,囊括了Unity引擎的所有核心功能。 -
书评书荐
-
附件下载
图书推荐