近年来移动互联网发展迅猛,很多消费者已经将移动端作为主要的使用平台,而移动平台上的游戏应用又是移动平台生态系统中最重要的一块蛋糕。作为一款跨平台的游戏引擎,Unity3D能够很容易地部署到各个移动平台,不仅上手容易,而且内置了很多现成的组件,可视化的编辑器也非常易用,深受广大游戏开发者的喜爱。
Unity3D目前已经成为移动平台主要的游戏引擎,支持主流的移动计算平台,包括iOS、Android、Windows、BlackBerry,以及PC平台的IE、Chrome和独立可执行程序,甚至还支持PS3和Wii U。内置的组件将物理引擎、声音引擎、碰撞检测、动画组件、场景管理等模块封装得非常易用,让开发者能够更加专注于游戏本身的逻辑开发。而可视化的所见即所得编辑器,可以帮助我们实时预览游戏效果,管理场景中的资源以及项目文件,而且操作起来非常方便。应用市场上已经有大量精良的游戏是使用Unity3D开发的。
本书由浅入深地介绍了Unity3D的使用,包括用户界面、摄像机、坐标系、图形界面、脚本组件、人物动画、纹理、光照、粒子系统、物理系统、文本文件处理、声音播放、性能优化等以及一些常用的开发技巧,书中有100多个实战技巧,可帮助读者逐步了解和熟悉Unity3D。动手能力强且喜欢自学的读者一定会很喜欢本书。
书中不仅有详细的案例“操作步骤”,还有“实现原理”、“更多内容”等,手把手地帮助读者在提高的过程中拓展思路。让我们曾经痴迷的某些游戏中的实现原理变得不再神秘,让游戏爱好者可以轻松地开发出自己的游戏。
希望本书的中文版能够帮助读者找到学习Unity3D的捷径,开发出更多优秀的游戏。
为了第一时间将书中的精彩内容以中文的方式呈现给各位读者,本人几乎投入了所有的休息时间。在翻译时,我反复揣摩原作者想表达的意图,保证专业术语的正确,并验证实战案例中代码的可执行性。虽力求完美,但书中难免存在疏漏和不足之处,恳请各位读者指正。
最后,感谢机械工业出版社的编辑对我的信任,还要感谢女朋友任虹对我的支持。
封面图
目录
- 译者序
- 前言
- 第1章Unity 4.X 入门1
- 1.1引言1
- 1.2安装Unity 4.X1
- 1.3设置首选项2
- 1.4了解和优化用户界面3
- 1.5把Unity中创建的资源另存为Prefab5
- 1.6了解Unity中的Content7
- 1.7导入自己的Content8
- 1.8导入Unity的包到项目中9
- 1.9导入自定义包到项目中11
- 1.10从项目中导出自定义包12
- 1.11添加自定义包到Unity的包快捷列表中13
- 1.12使用项目浏览视图14
- 第2章使用摄像机17
- 2.1引言17
- 2.2创建画中画效果17
- 2.3在不同摄像机之间切换21
- 2.4自定义镜头光晕效果24
- 2.5从屏幕内容制作纹理27
- 2.6伸缩可变焦的摄像机30
- 2.7制作检视摄像机33
- 2.8用Shuriken制作粒子效果35
- 2.9显示迷你地图38
- 第3章制作贴图和材质44
- 3.1引言44
- 3.2创建反射材质44
- 3.3创建自发光材质47
- 3.4创建高光纹理贴图51
- 3.5创建透明纹理贴图54
- 3.6使用cookie纹理模拟多云的户外环境57
- 3.7创建颜色选择对话框61
- 3.8通过GUI实时组合纹理64
- 3.9鼠标悬停时高亮显示材质67
- 3.10通过循环加载一组材质实现动画纹理(例如模拟视频)69
- 3.11禁用材质剔除71
- 第4章创建GUI73
- 4.1引言73
- 4.2显示数字时钟73
- 4.3显示指针时钟75
- 4.4用罗盘显示玩家的方向79
- 4.5用雷达指示对象的相对位置82
- 4.6为对应整数显示相应的图片85
- 4.7为对应浮点数和范围显示相应的图片87
- 4.8显示数字倒计时器90
- 4.9显示图形倒计时器(5,4,3,2,1——发射)91
- 4.10显示饼图样式的图形倒计时器93
- 4.11创建逐渐消失的消息96
- 4.12为单个对象拾取显示物品栏文本97
- 4.13为单个对象拾取显示物品栏图标 100
- 4.14用一个通用的拾取类管理物品栏102
- 4.15用鼠标滚轮控制滚动条105
- 4.16实现自定义的鼠标光标图标107
- 第5章控制动画111
- 5.1引言111
- 5.2配置一个人物角色的Avatar和空闲动画111
- 5.3用Root Motion和 Blend Trees移动人物角色115
- 5.4用层和遮罩混合动画123
- 5.5通过脚本重写 Root Motion128
- 5.6把刚性道具加入到动画角色中134
- 5.7让动画角色投掷物体137
- 5.8把 ragdoll物理系统应用于人物角色140
- 5.9通过旋转人物角色的身躯瞄准144
- 第6章播放和处理声音147
- 6.1引言147
- 6.2让音调与动画速度相匹配147
- 6.3添加自定义的音量控件150
- 6.4用Reverb Zones模拟隧道环境155
- 6.5防止声音片断在开始播放后又重新开始157
- 6.6在对象自销毁之前播放声音158
- 6.7制作动态配乐160
- 第7章使用外部资源文件和设备166
- 7.1引言166
- 7.2通过 Unity Default Resources加载外部资源文件166
- 7.3通过手动保存文件到Unity的资源文件夹加载外部文件169
- 7.4通过从互联网下载文件加载外部资源文件171
- 7.5使用静态属性保存和加载玩家数据173
- 7.6使用 PlayerPrefs保存和加载玩家数据176
- 7.7在游戏中保存截屏178
- 7.8使用Zigfu示例在Unity中用微软的Kinect控制角色180
- 7.9用微软的Kinect控制器让角色动起来182
- 7.10通过从微软的Kinect控制器保存移动来自制mocap184
- 7.11用PHP/MYSQL制作排行榜188
- 第8章使用外部文本文件和XML数据194
- 8.1引言194
- 8.2用TextAsset类的公有变量加载外部文本文件194
- 8.3用 C#文件流加载外部文本文件195
- 8.4用C#文件流保存外部文本文件198
- 8.5加载并解析外部的XML 文件199
- 8.6用XMLWriter手动创建XML文本数据202
- 8.7通过序列化自动创建XML文本数据206
- 8.8通过XMLDocument.Save()直接保存XML到文本文件来创建XML文本文件209
- 第9章管理对象状态和控制对象移动213
- 9.1引言213
- 9.2通过玩家的控制器控制立方体的移动213
- 9.3控制对象的朝向行为216
- 9.4控制对象到对象的移动(寻找、逃离、跟随一段距离)218
- 9.5通过flocking控制一组对象移动224
- 9.6以前进速度发射实例化的物体229
- 9.7寻找一个随机出生点233
- 9.8寻找最近的出生点236
- 9.9按路径点顺序跟随238
- 9.10用状态管理对象行为241
- 9.11用状态模式管理复杂的对象行为244
- 第10章用附加功能和优化选项改进游戏249
- 10.1引言249
- 10.2暂停游戏249
- 10.3实现慢镜头252
- 10.4用偏振投影实现3D 立体投影255
- 10.5阻止游戏被托管在未知服务器上259
- 10.6用代码分析识别性能的“瓶颈” 261
- 10.7通过在“死亡”时间销毁对象减少对象的数量264
- 10.8尽可能通过禁用对象减少启用对象的数量265
- 10.9通过委托和事件(避免SendMessage)改进效率268
- 10.10用Coroutine定期执行函数并且独立于帧率271
- 10.11用几个带有Coroutine的帧分摊大计算量272
- 10.12缓存,而不是使用反射和查找对象274
- 第11章利用Unity专业版278
- 11.1引言278
- 11.2用景深动态地聚焦对象278
- 11.3创建后视镜280
- 11.4在场景中播放视频284
- 11.5用音频滤镜模拟水下环境286
- 11.6加载和播放外部电影文件288