Unity 5.X 3D游戏开发技术详解与典型案例

978-7-115-41273-7
作者: 吴亚峰 索依娜
译者:
编辑: 张涛
分类: Unity

图书目录:

详情

本书通过对Unity 3D集成开发环境的搭建,集成开发环境各个界面的详细介绍,再到脚本的编写、开发过程中经常应用的技术和对象的讲解,以及最后的综合案例,给读者以由浅入深、循序渐进的学习过程,相信每一位读者都会通过本书得到意想不到的收获。

图书摘要

Unity 5.X 3D游戏开发技术详解与典型案例

吴亚峰 索依娜 编著

百纳科技 审校

人民邮电出版社

北京

图书在版编目(CIP)数据

Unity 5.X 3D游戏开发技术详解与典型案例/吴亚峰,索伊娜编著.--北京:人民邮电出版社,2016.2

ISBN 978-7-115-41273-7

Ⅰ.①U… Ⅱ.①吴…②索… Ⅲ.①游戏程序—程序设计 Ⅳ.①TP311.5

中国版本图书馆CIP数据核字(2015)第315942号

内容提要

本书对Unity 3D集成开发环境界面、脚本的编写和众多高级特效的实现进行了详细介绍,内容深入浅出,是一本适合不同需求、不同开发水平读者的技术宝典。

全书共分16章。第1章主要介绍了Unity 3D的诞生、特点、开发环境的搭建及运行机制;第2章对Unity 3D集成开发环境进行了详细介绍;第3章介绍了Unity 3D中脚本的编写;第4章主要对Unity 3D开发过程中经常使用的组件及对象进行了详细介绍;第5章介绍了Unity游戏开发中非常流行的第三方UI界面开发组件库——NGUI的基础知识;第6章介绍了Unity开发平台的完整的物理引擎体系;第7章介绍了Unity 3D中的着色器和着色器语言——ShaderLab;第8章介绍了天空盒、虚拟按钮与摇杆、声音、水特效、3D拾取、重力加速度传感器及雾特效等开发常用的技术;第9章介绍了Unity中经常使用的光影效果,主要包括各种光源、光照烘焙、法线贴图、镜面特效、波动水面真实效果等技术;第10章介绍了Unity中模型的网格概念及新旧动画系统;第11章介绍了Unity自带的地形引擎、拖尾渲染及导航网格和寻路系统等知识;第12章介绍了AssetBundle更新资源包的使用;第13章介绍了Unity中的多线程技术与网络开发;第14章介绍了Unity 2D游戏开发工具;第15章介绍了Unity 3D提供的Profiler工具的使用方法,及断点调试的两种方式;第16章介绍了完整的大型3D游戏案例——指间足球。

为了便于读者学习,本书还附赠光盘,包含了书中所有案例的完整源代码,能够最大限度地帮助读者快速掌握开发技术。

◆编著 吴亚峰 索依娜

审校 百纳科技

责任编辑 张涛

责任印制 张佳莹 焦志炜

◆人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

北京昌平百善印刷厂印刷

◆开本:787×1092 1/16

印张:40  彩插:2

字数:1059千字  2016年2月第1版

印数:1-2500册  2016年2月北京第1次印刷

定价:89.00元(附光盘)

读者服务热线:(010)81055410 印装质量热线:(010)81055316

反盗版热线:(010)81055315

广告经营许可证:京崇工商广字第0021号

前言

为什么要写这样的一本书

Unity 3D是由Unity Technologies开发的、能够轻松创建三维视频游戏、实时三维动画等类型的多平台的综合开发工具,也是一个很受欢迎的专业游戏引擎。

本书通过对Unity 3D集成开发环境的搭建,详细介绍了集成开发环境的各个界面,细致讲解了脚本的编写以及开发过程中经常应用的技术和对象,最后还提供了综合案例,给读者以由浅入深、循序渐进的学习过程,相信每一位读者都能通过本书得到意想不到的收获。

由于最近几年Unity 3D的迅猛发展,该游戏引擎通过不断地优化与改进已经升级到5.X版本。在Unity 5.X中增加了许多新的特性,如实现了实时全局光照,加入了对WebGL的支持,实现了完全的多线程等。本书也随着该游戏引擎的升级加入了许多新的内容,以满足开发者的需求。

本书特点

1.内容丰富,由浅入深

本书在组织上本着“起点低,终点高”的原则,从学习Unity 3D必知必会的基础知识开始,到基于着色器语言所实现的高级特效,最后以一个完整的大型3D游戏开发案例作为结束。这样的内容组织完全能够使一个初学者一步一步地成长为3D游戏开发的达人,适合绝大部分想学习3D游戏开发的人员,以及正在学习3D游戏开发人员的需求。

2.结构清晰,讲解到位

本书中配合每个需要讲解的知识点都给出了丰富的插图与完整的案例,使初学者易于上手。书中所有的案例均是根据笔者多年的开发心得设计的,结构清晰明朗,便于读者进行学习与参考。同时书中还给出了很多笔者多年来积累的编程技巧以及心得,具有很高的参考价值。

3.实用的光盘内容

为了便于读者的学习,本书附赠的光盘中包含了书中所有案例的完整源代码,能够最大限度地帮助读者快速掌握开发技术。

内容导读

本书总共分为16章,内容按照必知必会的基础知识、基于Unity集成开发环境及真实大型游戏案例的顺序进行了详细讲解。

本书内容丰富,从基本知识到高级特效,从简单的应用程序到完整的3D游戏案例,适合不同需求、不同水平层次的各类读者。

初学Unity 3D应用开发的读者

本书内容由浅入深,配有详细的案例。非常适合初学者循序渐进地学习,最终成为3D游戏应用开发的达人。

有一定3D开发基础读者,可以进一步深入学习Unity 3D高级开发技术

本书不仅包含了Unity 3D开发的基础知识,同时也包含基于着色器语言、高级光影效果、动画等技术所实现的高级特效,以及对Unity 3D强大的物理引擎的讲解与完整的游戏案例,有利于有一定基础的开发人员进一步提高开发水平。

各个平台的3D开发人员

由于Unity 3D是可以进行跨平台发布的,可以开发基于多个平台的项目,因此适合各种平台的3D开发人员学习与使用。

特别说明

本书中所有的案例项目及源代码都在附带的光盘中,在正文中提到第几章下面的某个项目目录时,实际指的是光盘中此章目录下同名的zip压缩包。实际使用时,读者需要将所需的压缩包复制到自己的计算机上解压缩。

本书作者

吴亚峰,毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位,1998年开始从事Java应用的开发,有10多年的Java开发与培训经验。主要的研究方向为OpenGL ES、手机游戏、Java EE以及搜索引擎。作为手机游戏、Java EE独立软件开发工程师,他同时兼任了百纳科技Java培训中心首席培训师,近10年来为多家著名企业培养了上千名高级软件开发人员,曾编写过《Unity 3D游戏开发技术详解与典型案例》《Unity 4 3D开发实战详解》《Unity游戏案例开发大全》《Android 应用案例开发大全》(第一版、第二版及第三版)、《Android 游戏开发大全》(第一版、第二版及第三版)、《OpenGL ES 2.0游戏开发(上下卷)》等多本畅销技术图书。2008年年初开始关注Android平台下的3D应用开发,并开发出一系列优秀的Android应用程序与3D游戏。

索依娜,毕业于燕山大学,从业于计算机软件领域10余年,在软件开发与计算机教学方面有着丰富的经验,工作期间曾参与省级科研项目2项,发表论文多篇并参与编写技术图书多部,从2008年起开始关注Android平台下的应用开发,参与了多款手机娱乐应用的开发。

本书在编写过程中得到了唐山百纳科技有限公司Java培训中心的大力支持,同时倪文帅、汪博文、陈泽鑫、王步国、张靖豪、刘建雄、王淳鹤、罗星辰、吴晖以及作者的家人为本书的编写提供了很多帮助,在此表示衷心的感谢!

由于编者的水平和学识有限,且书中涉及的知识较多,难免有错误疏漏之处,敬请广大读者批评指正,本书答疑QQ群为277435906。编辑联系邮箱为zhangtao@ptpress.com.cn。

编者

第1章 Unity基础以及开发环境的搭建

本章主要向读者介绍Unity的基础知识及Unity集成开发环境的安装,使读者对Unity有一个大致的了解。通过将本书附带光盘中的各个项目案例导入到自己的计算机上并运行,读者可以在Unity中进行效果预览和其他操作。

1.1 Unity基础知识概览

本节主要向读者介绍Unity的发展历史及其别具一格的特点,主要内容包括Unity的简介、Unity的诞生及发展、Unity广阔的市场前景和Unity的特点等。通过本节的学习,读者将对Unity有一个基本的认识。

1.1.1 初识Unity

Unity是由Unity Technologies开发的一个能够轻松创建三维视频游戏、建筑可视化及实时三维动画等互动内容的、多平台的综合型开发工具,也是一个全面整合的专业游戏引擎。通过Unity简单的用户界面,用户可以完成几乎所有工作。

Unity类似于Director、Blender Game Engine、Virtools和Torque Game Builder等利用交互的图形化开发环境为首要方式的3D游戏引擎软件。

其编辑器运行在Windows和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone和Android平台,也可以利用Unity Web Player插件发布网页游戏,支持Mac和Windows的网页浏览。Unity的网页播放器也被Mac Widgets所支持。

1.1.2 Unity的诞生及发展

Unity现在已经是移动游戏领域较为优秀的游戏引擎,能从诞生到现在不到10年的时间取得如此成绩,Unity 可谓是生逢其时。本节为了让读者对Unity有更进一步的了解,将为读者介绍Unity的发展史。

2005年6月,Unity 1.0发布。Unity 1.0是一个轻量级、可扩展的依赖注入容器,有助于创建松散耦合的系统。它支持构建子注入(Constructor Injection)、属性/设值方法注入(Property/Setter Injection)和方法调用注入(Method Call Injection)。

2009年3月,Unity 2.5加入了对Windows的支持。Unity 2.5完全支持Windows Vista与Windows XP的全部功能和互操作性,而且Mac OS X中的Unity编辑器也已经重建,在外观和功能上都形成了统一。Unity 2.5的优点就是Unity几乎可以在所有平台上建立任何游戏,实现了真正的跨平台。

2009年10月,Unity 2.6独立版开始免费。Unity 2.6支持了许多的外部版本控制系统,如Subversion、Perforce、Bazaar以及其他的VCS系统等。除此之外,Unity 2.6与Visual Studio完整的一体化也增加了Unity自动同步Visual Studio项目的源代码,实现了所有脚本的解决方案和智能配置。

2010年9月,支持多平台的Unity 3.0发布。其新增加的功能有:方便编辑桌面左侧的快速启动栏、增加支持Ubuntu 12.04、更改桌面主题和在dash中隐藏“可下载的软件”类别等。

2012年2月,Unity Technologies发布了Unity 3.5。Unity 3.5提供了大量的新增功能和改进功能。所有使用Unity3.0或更高版本的用户均可免费升级到Unity 3.5。

2012年11月,Unity Technologies公司正式推出Unity 4.0,新加入对DirectX 11的支持和全新的Mecanim动画工具,支持移动平台的动态阴影,减少了移动平台Mesh内存消耗,支持动态字体渲染,并为用户提供了Linux及Adobe Flash Player的部署预览功能。

2013年11月,Unity 4.3发布。同时Unity正式发布2D工具,这标志着Unity 不再是单一的3D工具,而是真正地实现了同时支持二维和三维内容的开发和发布。发布2D工具的预告已经让Unity 开发者兴奋不已,这也正是开发者长久以来所期待的。

2014年11月,Unity 4.6发布,加入了新的UI系统,Unity 开发者可以使用基于UI框架和视觉工具的Unity强大的新组件来设计游戏或应用程序。

2015年3月,Unity Technologies在GDC2015上正式发布了Unity 5.0,Unity首席执行官John Riccitiello表示,Unity 5.0是Unity发展史上的重要里程碑。Unity 5.0实现了实时全局光照,加入了对WebGL的支持,实现了完全的多线程。

2015年6月,Unity 5.1发布,加入了为VR和AR设备优化的渲染管道,可直接插入Oculus Rift开发机进行测试。头部追踪和景深FOV都会自动地应用到摄像头。

1.1.3 Unity广阔的市场前景

近几年来,Android平台游戏、iPhone平台游戏以及Web的网页游戏发展迅猛,已然成为带动游戏业发展的新生力量。遗憾的是,目前除了少数的作品获得成功外,大部分的游戏都属于宣传攻势大于内容品质的平庸之作。

面对这种局面,3D游戏成为独辟蹊径的一种选择。而为3D游戏研发提供强大技术支持的Unity引擎,对DirectX和OpenGL拥有高度优化的图形渲染管道,以其创造高质量的3D游戏和真实视觉效果的核心技术,为开发3D游戏提供了强大的源动力。

提示

Unity游戏引擎后来居上,在近两年发行的几款风靡一时的iOS和Android平台上的游戏,如《时空之刃》《炉石传说》《我叫MT 2》等都选择了这款游戏引擎。

Unity不仅在游戏领域里有广阔的应用,其还可以用于3D虚拟仿真、大型产品3D展示、3D虚拟展会、3D场景导航以及一些精密仪器使用方法的演示等,应用领域非常广泛。

Unity游戏引擎技术研讨会最早于2011年5月在韩国举行。据悉,现在10种以上的新引擎开发,都是采用了Unity游戏引擎技术。已有部分开发商利用China Joy展会的契机,展示了其所开发的新引擎的运行效果,目前已有不少厂商与开发商签订了提前预定引擎的协议。

提示

Unity引擎可以帮助开发人员制作出炫丼的3D效果,幵实时生成查看,目前已推出了对应iPhone、iPad、Android、Android TV、Tizen、PC、Mac、Flash Player、WebGL、Wii U、PS3、PS4、PS Vita、XBox360、XBox One、Oculus Rift、Gear VR、Hololens等平台的版本,促进了游戏跨平台的应用。读者要做的只是在编辑器中选择使用哪一个平台来预览游戏作品。

未来几年将会是Unity大行其道的时代:因其开发群体的迅速扩大,Wed Player装机率的快速上升,使Unity迅速爆发的时机已经到了。在此引用业内知名人士的一句话:“不要再对所谓的Flash 3D抱有什么希望,也不要再去花心思学习那些杂七杂八的Flash3 D插件,赶紧学习Unity才是正道”。

1.1.4 独具特色的Unity

通过前面的学习,相信读者已经对Unity了一个基本的认识。Unity在游戏开发领域用其独特而强大的技术理念征服了全球众多的业界公司及游戏开发者。在本节中,将为读者介绍 Unity 的特点,帮助读者进一步学习Unity。

1.Unity本身所具有的特点

综合编辑

Unity用户界面是简单的、层级式的综合开发环境,具备视觉化编辑、详细的属性编辑器和动态的游戏预览特性。由于其强大的综合编辑特性,Unity也被用来快速制作游戏或者开发游戏原型。效果如图1-1所示。

图形引擎

Unity的图形引擎使用的是Direct3D(Windows)、OpenGL(Mac,Windows)和自有的APIs (Wii)。可以支持Bump Mapping、Reflection Mapping、Parallax Mapping、Screen Space Ambient Occlusion、动态阴影所使用的Shadow Map技术与Render-to-texutre和全屏 Post Processing 效果。

资源导入

项目中的资源会被自动导入,并根据资源的改动自动更新。虽然很多主流的三维建模软件为Unity所支持,不过对于3ds Max、Maya、Blender、Cinema 4D和Cheetah3D的支持效果比较好,并支持一些其他的三维格式。

一键部署

Unity可开发微软Microsoft Windows和Mac OS X 的可执行文件,在线内容通过Unity Web Player插件支持Internet Explorer、Mozilla、Netscape、Opera和 Camino、Mac OS X的Dashboard工具,但是Wii程序和iPhone应用程序的开发需要用户购买额外的授权,在价格上有所不同,如图1-2所示。

着色器(Shader)

着色语言编写使用ShaderLab语言,同时支持自有工作流中的编程方式或Cg、GLSL语言编写的着色文件。Shader对游戏画面的控制力就好比在Photoshop中编辑数码照片,在资深者手中可以营造出各种惊人的画面效果。图1-3所示为Unity经典游戏“愤怒的机器人”场景中的Shader应用效果。

一个Shader可以包含众多变量及一个参数接口,允许Unity去判定参数是否为当前所支持并适配最适合参数,并选择相应的 shader 类型以获得广大的兼容性。因此,Unity 的着色器系统具有易用、灵活和高性能的特性。

地形编辑器

Unity内建强大的地形编辑器,支持地形创建和树木与植被贴片,还支持自动的地形 LOD,而且还支持水面特效,尤其是低端硬件亦可流畅运行广阔茂盛的植被景观,还可用Tree Create来编辑树木的各部位细节。如图1-4和图1-5所示。

联网

现在大部分的游戏都是联网的。令人惊喜的是,Unity 内置了强大的多人联网游戏引擎,具有 Unity 自带的客户端和服务器端,省去了并发、多任务等一系列烦琐而困难的操作,可以简单地完成所需的任务。其多人网络连线采用Raknet,可以从单人游戏到全实时多人游戏。

物理特效

物理引擎是模拟牛顿力学模型的一个计算机程序,使用质量、速度、摩擦力和空气阻力等变量。来预测各种不同情况下的效果。Unity内置NVIDIA强大的PhysX物理引擎,可以方便、准确地开发出所需要的物理特效。

PhysX可以由CPU计算,但其程序本身在设计上还可以调用独立的浮点处理器(如GPU和PPU)来计算,也正因为如此,它可以轻松地完成像流体力学模拟那样的大计算量的物理模拟计算。并且PhysX物理引擎还可以在包括Windows、Linux、Xbox360、Mac、Android等在内的全平台上运行。

音频和视频

音效系统基于OpenAL程式库,可以播放Ogg Vorbis的压缩音效。视频播放采用Theora编码,并支持实时三维图形混合音频流和视频流。

OpenAL主要的功能是在来源物体、音效缓冲和收听者中编码。来源物体包含一个指向缓冲区的指标、声音的速度、位置和方向,以及声音强度。收听者物体包含收听者的速度、位置和方向,以及全部声音的整体增益。缓冲里包含8或16位元、单声道或立体声PCM格式的音效资料,引擎进行所有必要的计算,如距离衰减、多普勒效应等。

脚本

游戏脚本为基于Mono的Mono脚本,是一个基于.NET Framework的开源语言,因此,程序员可用JavaScript 、C#加以编写。如图1-6所示。

提示

由于JavaScript和C#脚本语言是目前Unity开发中比较流行的语言,同时,考虑到脚本语言的通用性,因此,本书采用JavaScript和C#两种脚本语言编写脚本,给读者带来更多的便利。Unity资源服务器

Unity资源服务器具有一个支持各种游戏和脚本版本的控制方案,使用PostgreSql作为后端。其可以保证在开发过程中的多人并行开发,使不同的开发人员在使用不同版本的开发工具时所编写的脚本能够顺利的集成。

真实的光影效果

Unity提供了具有柔和阴影与lightmaps的高度完善的光影渲染系统。光照图(lightmap)是包含了视频游戏中面的光照信息的一种三维引擎的光强数据。光照图是预先计算好的,而且要用在静态目标上。

Unity 5融入了Geomerics行业领先的实时全局光照技术Enlighten。Enlighten是目前仅有的,为实现PC、主机和移动游戏中的完全动态光照效果而进行了优化的实时全局光照技术。Enlighten的实时技术也极大地改善了工作流程,使美工和设计师能够直接在 Unity 5 编辑器中为所有游戏风格创建引人入胜的逼真视觉效果。Enlighten实时全局光照效果如图1-7所示。

说明

静态目标(static objects)在三维引擎里是区别于动态目标(dynamic object)的一种分类。

集成2D游戏开发工具

2D游戏在当今的游戏市场仍然占据着很大的市场份额,尤其是对于移动设备(如手机、平板电脑等),2D游戏仍然是一种主要的开发方式。针对这种情况,Unity在4.3版本以后正式加入了Unity 2D游戏开发工具集。

使用Unity 2D游戏开发工具集可以非常方便地开发2D游戏,利用工具集中的2D游戏换帧动画图片的制作工具可以快速地制作2D游戏换帧动画。Unity为2D游戏开发集成了Box2D物理引擎并提供的一系列2D物理组件,通过这些组件可以非常简单地在2D游戏中实现物理特性。

2.Unity的跨平台特性

Unity类似于Director、Blender Game Engine、Virtools或Torque Game Builder等利用交互的图形化开发环境为首要方式的软件。其编辑器运行在Windows和Mac OS X 下,可发布游戏至Windows、Mac、Wii、iPhone和Android平台,也可以利用Unity Web Player插件发布网页游戏,支持Mac和Windows的网页浏览。

现在市面上已经推出了很多由Unity开发的基于Android平台、iPhone平台的游戏和大型的3D网页游戏,这些游戏都得到了很高评价。接下来将分别为读者介绍这3类游戏。

基于Android平台的游戏

Unity可以基于Android平台进行游戏开发。由于Unity自身存在的优势,因此,通过它开发的游戏也总是能让人赏心悦目并赞不绝口。

例如,《捣蛋猪》是Rovio Entertainment继《愤怒的小鸟》之后的又一款力作,如图1-8所示;由天美艺游工作室开发的《天天飞车》,如图 1-9 所示;由 GluMobile 开发的《血之荣耀》,如图1-10所示;由蓝港在线开发的《王者之剑》,如图1-11所示。

基于iPhone平台的游戏

Unity也可以基于iPhone平台进行游戏开发,由于其自身存在的优势,可以制作出绚丽多彩的iPhone平台游戏。

例如,由Imangi Studios开发的跑酷类视频游戏《神庙逃亡2》,如图1-12所示;由Defiant Development Pty.Ltd开发的《滑雪大冒险》,如图1-13所示;由YANSHU SUN开发的《崩坏学园》,如图1-14所示;由Crescent Moon Games LLC开发的Slingshot Racing,如图1-15所示。

基于Web的大型3D网页游戏

同样,Unity也可以开发基于 Web 的大型3D 网页游戏。网页类游戏不用下载客户端,也是近几年比较流行的一种游戏类型,市面上已经推出了很多这样的3D网页游戏。

例如,《新仙剑奇侠传 online》是骏梦游戏的最新力作,如图1-16所示;由上海友齐开发的《坦克英雄》,如图1-17所示;《绝代双骄》是由开发商昆仑在线开发的一款全新网页游戏,如图1-18所示;《蒸汽之城》是厦门梦加网络科技有限公司开发的一款3D网页MMORPG,如图1-19所示。

Unity基础知识到这里介绍完毕,接下来将详细介绍Unity中开发环境的搭建,这是进行Unity开发的第一步。通过讲解Unity集成开发环境的安装和将目标平台的SDK集成到Unity,使读者可以顺利地进入Unity集成开发环境。

1.2 Unity开发环境的搭建

本节将介绍Unity集成开发环境的搭建。开发环境的搭建分为两个步骤:Unity集成开发环境的安装和目标平台的SDK与Unity的集成(其中,包括在Windows平台下安装Android SDK和在Mac OS平台下安装SDK)。

1.2.1 Windows平台下Unity的下载及安装

本节将主要讲述如何在Windows平台下搭建Unity的集成开发环境,包括如何从Unity官网下载Windows平台下使用的Unity游戏开发引擎,以及如何安装下载好的Unity安装程序。具体的操作步骤如下。

(1)首先登录到Unity官方网站http://unity3d.com下载Unity的安装程序。将Unity官方网站首页拖至最底部,如图1-20所示,在“下载”栏中单击“Unity”超链接,网页跳转到新版Unity的版本比较页面,该页面展示了专业版和个人版的功能区别。再将网页拖至底部,在“资源”栏中单击“Unity旧版本”超链接,如图1-21所示。

提示

由于Unity官网的默认语言为英语,所以打开页面后内容全部为英文。语言选项在网页最底部的右下角处,读者可根据个人需要选择合适的语言。

(2)单击“Unity旧版本”超链接后,网页跳转到Unity的下载存档页面,在该页面下可以下载最新版本和以前版本的Unity。这里选择5.1.1版本的Unity,如图1-22所示;单击右侧的“下载(Win)”会出现下拉菜单,如图1-23所示,笔者在这里选择第二项。

(3)双击下载好的Unity安装程序UnitySetup64.exe,会打开Welcome to the Unity 5.1.1f1(64-bit) Setup窗口,如图1-24所示。单击Next按钮进入License Agreement窗口,如图1-25所示。

(4)在License Agreement窗口,单击I Agree按钮进入Choose Components窗口,如图1-26所示。然后在Choose Components窗口,将可选项全部选中并单击Next按钮进入Choose Install Location窗口,如图1-27所示。

(5)在Choose Install Location窗口,选择好安装路径(本书以默认路径为例),单击Install按钮进行安装,将进入Installing窗口,如图1-28所示。进入Installing窗口后(这是Unity的安装过程)会需要一定的时间,请耐心等待。

(6)安装结束,会跳转到Finsh窗口(见图1-29),单击Finsh按钮即可(如果选中Run Unity 5.1.1f1选项,则单击Finsh按钮就会跳转到Activate your license窗口),此时桌面上会出现一个Unity.exe的快捷方式,如图1-30所示。

(7)如果没有选中Run Unity 5.1.1f1选项,则双击桌面上Unity.exe的快捷方式,也将会跳转到Activate your license窗口,如图1-31所示。此时,勾选Unity 5 Professional Edtion即选择使用专业版,勾选“Unity 5 Personal Edtion”则为选择使用个人版。在选择版本后,单击OK按钮进行下一步。

提示

选择使用专业版需要序列号,有序列号的用户可以选择该项然后输入序列号,没有序列号的用户可以到官方网站购买。选择使用个人版的用户,需要在官方网站注册一个账户,通过账户激活 Unity。个人版有诸多限制,许多功能都不能够在该版本中使用,不建议选择该版本。

(8)使用个人版的用户需要在Log into your Unity Account窗口下填入账户相关信息,如图1-32所示。然后单击OK按钮,进入Unity公司的调查问卷窗口,如图1-33所示。完成调查问卷后,单击OK按钮,跳转到启动窗口,如图1-34所示。

提示

注册必须在联网的前提下才能进行操作。没有Unity账户的用户可以单击Create Account按钮(见图1-32)注册一个账户,注册完后必须登录注册所使用的邮箱确认注册。由于篇幅的限制,这里不再赘述注册账户的过程。

(9)进入启动窗口后,单击图1-34中所示的Start using Unity按钮进入选择项目窗口,如图1-35所示。选择Create New Project选项,这里的工程路径选择默认路径,然后单击Create按钮就可进入Unity 集成开发环境,如图1-36所示。

▲图1-36 Unity集成开发环境

提示

Unity 的安装要求操作系统为 Windows XP SP2以上、Windows 7 SP1以上、Windows8,不支持Windows Vista;GPU要求有DX9(着色器模型2.0)功能的显卡, 2004年以后的产品都可以。对于整体要求,现在所使用的计算机以上两点都满足。

1.2.2 Mac OS平台下Unity的下载及安装

上一节介绍了如何在Windows平台下搭建 Unity 的集成开发环境,本节将具体介绍如何在Mac OS平台下下载Mac版的Unity游戏开发引擎安装程序,以及如何安装下载好的Mac版Unity安装程序。具体的操作步骤如下。

(1)Mac OS平台下Unity的下载与Windows大致相同,故省略前面的打开网页步骤,直接从下载存档页面开始介绍这里选择5.0.1版本的Unity,如图1-37所示。单击右侧的“下载(Mac)”会出现下拉菜单,如图1-38所示。下拉菜单的前两项分别为下载Unity下载助手、下载Unity安装程序。读者可根据个人情况选择下载,笔者在这里选择第二项。

(2)完成下载后,开始安装Unity。首先双击下载好的Unity安装文件Unity.pkg,会弹出Unity的安装窗口,如图1-39所示。单击继续按钮,会弹出软件许可协议窗口,如图1-40所示。

(3)阅读完 Unity 的安装许可协议后,单击继续按钮,会弹出小窗口提示用户是否同意软件许可协议,如图1-41所示,单击同意按钮来继续安装。在目的宗卷窗口下,选择要安装Unity的磁盘,单击继续按钮,如图1-42所示。

(4)在安装确认窗口上,显示了Unity将占用计算机上5.27GB的存储空间,如图1-43所示。如不需要更改安装位置,则单击安装按钮开始进行安装,此时会弹出安装准备窗口,如图1-44所示。

(5)准备工作完成后,安装程序会自动开始安装工作,如图1-45所示。在此期间用户无需进行其他操作,只需要耐心等待即可。当安装工作完成后,会弹出安装成功窗口,如图1-46所示。单击关闭按钮,完成安装。

(6)完成安装后,在已安装的应用中找到Unity,单击图标,打开程序。首次打开Unity需要进行激活,具体激活方式与Windows下的方式相同,由于篇幅的限制,这里不再赘述具体过程,读者可参考前面的介绍。激活窗口如图1-47和图1-48所示。

(7)完成激活后,会弹出启动窗口,如图1-49所示。单击Start using Unity按钮进入选择项目窗口,如图1-50所示。新建项目时,重命名项目名称,这里的工程路径选择默认路径,然后单击Create按钮进入Unity 开发环境,如图1-51所示。

1.2.3 目标平台的SDK与Unity集成

前面已经对 Unity 这个游戏引擎进行了简单的介绍,由于它可发布游戏至 Window、Mac、Wii、iPhone 和 Android 平台,因此在不同的平台下,需要下载、安装与集成目标平台的 SDK。本节将详细地为读者介绍如何把目标平台的SDK集成到Unity。

1.Android的SDK下载安装与集成

前面已经对Unity 3D这个游戏引擎的下载和安装进行了详细的介绍,从本节开始,将为大家介绍Android平台下的SDK安装与集成,具体的步骤如下。

说明

由于Android是基于Java的,所以要先安装JDK。

(1)登录到ORACLE官方网站http://www.oracle.com/technetwork/java/index.html下载最新的JDK。双击刚刚下载的JDK安装程序jdk-7u25-windows-x64.exe,根据提示将JDK安装到默认目录下。

(2)右键单击我的电脑,依次选择属性/高级/环境变量,在系统变量中新建一个名为“JAVA_HOME”的环境变量,设置该变量的值为“C:\Program Files\Java\jdk1.7.0_07”,如图1-52所示。再打开Path环境变量,在最后加上“C:\Program Files\Java\jdk1.7.0_07\bin;”,单击确定按钮即可。

(3)到http://developer.android.com页面下载Android的SDK,本书使用的版本是5.0,其他版本的安装与配置方法基本相同。将下载好的SDK压缩包解压到任意盘的根目录下,笔者将SDK放在了F盘根目录下,如图1-53所示。

(4)右键单击我的电脑,依次选择属性/高级/环境变量,打开Path系统环境变量,在最后加上SDK的解压目录中的tools目录“F:\sdk\tools”,然后单击确定按钮完成配置。如图1-54所示。

(5)进入Unity集成开发环境,依次单击菜单栏命令“Edit→Preferences”,如图1-55所示,在弹出的新对话框Unity Preferences中选择External Tools选项,选择正确的Android SDK路径,如图1-56所示。

2.iPhone SDK的下载安装与集成

由于Unity是跨平台的,所以对于Unity而言,在iPhone平台下同样能够正常运行。iPhone的SDK下载、安装和集成与Android的SDK下载、安装和集成大体相同。

(1)登录Apple Developer Connection的网站http://developer.apple.com/iphone下载SDK。网站如图1-57所示。

(2)如果已经有Apple ID了,则只需填写好账号和密码,单击Sign In按钮登录。登录界面如图1-58所示。

(3)若还没有Apple ID,则需先创建一个,创建账号是免费的。在注册信息界面,所有必需填写的信息都要填写正确,最好用英文。注册信息界面如图1-59所示。

(4)注册结束并成功登录后,下载iPhone SDK。整个发布包约2GB大小,因此最好通过高速Internet连接来下载,这样可以提高下载速度。SDK是以磁盘镜像文件的形式提供的,默认保存在Downloads文件夹下。如图1-60所示。

(5)双击此磁盘镜像文件即可进行加载。加载后就会看到一个名为“iPhone SDK”的卷。打开这个卷会出现一个显示该卷内容的窗口。在此窗口中,能看到一个名为“iPhone SDK”的包。

双击此包即可开始安装过程。同意了若干许可条款后,安装就可结束。

提示

确保选择了iPhone SDK这一项,然后单击Continue按钮。安装程序会将Xcode和iPhone SDK安装到计算机桌面的/Developer目录下。

1.3 第一个Unity程序

本节将详细地介绍如何在 Unity 集成开发环境中创建第一个 Unity 案例,将其运行并体验实际效果。此案例的主要内容为:制作一个具有弹性的球体,并使其能够在篮球场上弹跳。读者可参照以下的具体操作步骤进行操作。

(1)首先启动 Unity,如图1-61所示。单击 New project 来创建一个新工程,将其重命名为“BallSample”,选择3D选项,即建立的工程是3D的,如图1-62所示。最后单击Creat project按钮,完成创建并进入Unity集成开发环境。

(2)进入Unity集成开发环境后,单击菜单栏中GameObject菜单,执行“3D Object→Cube”命令,创建一个Cube(立方体)。如图1-63所示。

(3)在Unity集成开发环境中的Hierarchy视口里双击刚刚创建的Cube对象,在Scene窗口的中心就会出现该Cube对象。如图1-64所示。

(4)在Hierarchy视口里单击刚刚创建的Cube对象,右侧的Inspector视口会立即显示Cube对象的所有属性。调整其位置参数、旋转参数和缩放参数,如图1-65所示。

(5)在Unity集成开发环境中,单击菜单栏中的Assets菜单,选择Import New Asset命令,导入所需要使用的资源文件,如图1-66所示。在这个案例中,所需要导入的资源是纹理图片(见图1-67),选中所需要导入的纹理图片,单击Import按钮完成导入。

提示

为了方便快速地导入这些比较小的资源文件,可以通过直接将其拖曳进 Unity集成开发环境中来实现。

(6)为所创建的 Cube 对象添加合适的纹理贴图,就需要创建一个材质对象,执行“Assets→Create→Material”命令,此时资源列表中会生成一个New Material.mat文件,如图1-68所示。将其重命名为“plane.mat”,在其属性栏中单击Albedo前的“⊙”符号会弹出一个Select Texture对话框,如图1-69所示,选择合适的纹理贴图,之后关闭对话框。

提示

给对象添加纹理最快捷的方法是直接将合适的纹理图片拖曳到Sence视口或Hierarchy视口对应的对象上,此时资源列表中会自动生成一个名为“Materials”的文件夹,里面包含了刚刚生成的“plane.mat”文件。

(7)接下来,需要创建一个Sphere(球体)对象,具体步骤为“GameObject→3D Object→Sphere”。为其添加纹理basketball.mat,效果如图1-70所示。之后设置其Transform组件中的参数,如图1-71所示。

(8)接下来,需要为场景添加一个光源,这里创建的为平行光光源,具体步骤为“GameObject→Light→Directional Light”。光源在Scene视口中的效果如图1-72所示。在右侧属性查看器中调整其位置、姿态、缩放比例、光照颜色、光照强度、阴影类型等参数,如图1-73所示。

(9)在Unity集成开发环境中的Hierarchy视口里单击Main Camera(主摄像机),在右侧属性查看器中调整主摄像机的参数,包括位置、姿态、大小、背景颜色、投影方式、视角大小等。如图1-74所示。

提示

每一个新创建的场景中,都会自带一个主摄像机以及一个平行光光源,用户可以直接使用。

(10)接下来为Sphere对象添加Rigibody(刚体)组件。首先在Hierarchy视口中选中Sphere,之后单击属性框底部的Add Component按钮,如图1-75所示;选择“Physics→Rigibody”,并调整其属性,如图1-76所示。

(11)如果想要球体具有弹性,需要为球体对象添加物理材质,具体步骤为“Assets→Create→Physic Material”,如图1-77所示。为其设置合适的Bounciness参数,如图1-78所示。

(12)一切准备完成后,即可单击运行按钮,所制作的Unity程序的运行效果就会在Game视口里展现出来。如图1-79所示。

1.4 本书案例的导入及运行

本节将以随书光盘中上一节制作的案例为例,详细地介绍如何导入并运行已完成的项目。读者可参照以下的操作步骤将随书光盘中的各个项目案例导入到自己计算机上的 Unity 进行效果预览和其他操作。具体的导入操作步骤如下。

(1)启动Unity,然后在菜单栏中选择执行“File→Open Project…”命令以打开一个项目,如图1-80所示。进入项目向导Recent Project界面,然后单击Open other按钮找到要导入的项目,如图1-81所示。

(2)找到项目文件夹存放的路径,选择要导入的项目文件夹,这里以书中上一节制作的案例为例。选择BallSample文件夹,然后单击选择文件夹按钮,效果如图1-82所示。

提示

读者在进行这步之前必须把光盘中对应的案例项目文件夹复制到计算机的某个路径下(路径不能出现中文),这里把BallSample项目文件夹存放在F盘根目录下。

(3)操作到这里Unity会重新启动,进入到Unity后在Project视图中的Assets/Scene文件夹下找scene1.unity文件,然后双击该文件就能在Scene场景中看到图1-83所示的效果了。读者还可以自己运行导入的案例。

(4)将项目导入Android手机。在菜单栏中选择执行“File→Build Settings...”命令(见图1-84),进入Build Settings界面,如图1-85所示。然后单击Add Current按钮添加游戏需要的场景,在Platform中选择Android选项。

(5)单击Build And Run按钮,弹出选择apk包存放路径对话框,如图1-86所示。选择一个路径用于存放生成的游戏apk包,在文件名处输入生成apk包的名字,然后单击保存按钮开始将游戏导入手机,此时会弹出导入进度条Building Player,如图1-87所示。

(6)进入Building Player界面后会需要一定的时间,请耐心等待。生成过程结束后手机就会自动进入游戏界面并且会在手机上显示一个游戏图标,如图1-88、图1-89所示。在原来选择的路径下出现此游戏的apk包,如图1-90所示。

(7)如果在Build Settings界面仅仅单击Build按钮,只会生成apk包而不会将游戏自动导入手机,所以使用这种方法生成游戏apk包时不用连接手机。

(8)导出iOS项目。进入Build Settings界面在Platform中选择iOS选项,如图1-91所示。单击Player Setting按钮打开Player Setting界面,设置SDK Version参数为“Simulator SDK”以便导出项目能在iOS虚拟机上运行,如图1-92所示。

(9)单击Build And Run按钮,弹出选择iOS项目存放路径对话框,如图1-93所示。选择一个路径用于存放生成的iOS项目文件夹,在文件名处输入生成项目文件夹的名字,然后单击Save按钮开始生成iOS项目,弹出导入进度条Building Player,如图1-94所示。

(10)进入Building Player界面后会需要一定的时间,请耐心等待。生成过程结束后会自动打开Xcode并将生成的iOS项目导入到Xcode中,这时Xcode会自动打开iOS虚拟机并将刚生成的项目导入到虚拟机中自动运行。项目运行界面如图1-95所示。

提示

由于iPhone平台是非开放平台,需要许可证才能将项目导入到真机中运行,所以上面只讲了导入虚拟机的过程。如果拥有许可证,则将项目导入到真机的过程和导入虚拟机的过程基本一样。

1.5 本章小结

本章首先介绍了Unity 3D的发展历史以及其别具一格的特点,内容主要包括Unity 3D的简介、Unity 3D的发展和Unity 3D的特点等。相信读者对Unity 3D已经有了初步的了解。对于Unity 3D的发展历史这部分读者只需大致了解,不需深究。

其次,本章通过讲解Unity集成开发环境的安装和将目标平台的SDK集成到Unity的具体步骤,使读者可以顺利地进入Unity集成开发环境。

最后,通过本书案例的导入及运行,可以使读者方便地将光盘中的各个项目案例导入到自己计算机上的Unity进行效果预览和其他操作。

第2章 Unity集成开发环境详解

Unity是一个强大的集成游戏引擎和编辑器,其让开发者可以迅速高效地创建对象、导入外部资源,并且用代码把它们连接在一起。Unity编辑器是可视化的,其围绕这样的原则而构建,即开发者可以使用一个简单的拖放动作来完成任何任务,甚至可以连接脚本,自己编写程序实现特定的功能。

本章将对Unity的集成开发环境做系统化详解,分别对Unity集成开发环境的整体布局、标题栏、菜单栏、工具栏、各个面板,以及对菜单栏中的每个菜单做详细的介绍和说明,使读者系统化地理解和使用Unity集成开发环境。

2.1 Unity集成开发环境的整体布局

本节将对Unity集成开发环境的整体布局做详细的介绍与说明,主要包括标题栏、菜单栏、工具栏、场景设计面板、游戏预览面板、属性查看器等,使读者理解各个布局的作用,对 Unity集成开发环境有一个整体的了解。

2.1.1 Unity集成开发环境的整体布局

Unity集成开发环境的默认布局分割为一系列不同的面板和带有标签的窗口。每个窗口都显示了编辑器某一方面的细节,并允许开发者在开发游戏时使用不同的功能。如果读者曾经使用过一款三维建模程序或是其他的游戏编辑器,会发现它们有些相似。

双击Unity的快捷方式,进入Unity集成开发环境,可以看到其整体布局为标题栏、菜单栏、工具栏、场景设计面板、游戏预览面板、游戏组成对象列表、项目资源列表、属性查看器、提示栏和控制器台,如图2-1所示。

说明

读者可以根据自己的爱好和实际需要来创建自己的布局。可以在每个面板或者窗口的标签处按住鼠标左键,把面板或者窗口拖到适当的位置后松开鼠标左键。布局完成后可以执行“Window→Layouts→Save Layout”命令以保存自己的布局。如果布局被不小心弄乱了,可以通过执行“Window→Layouts”命令找到自己保存的布局来恢复。

所有带标签的窗口都带有一个名为Windows Options(窗口选项)的下拉框,可以用来最大化所选中的视图窗口,或是关闭当前显示的标签视图,或是在这个窗口中添加另一个带标签的视图。单击该图标可以弹出可用的选项,如图2-2所示。

2.1.2 菜单栏

菜单栏中包括File、Edit、Assets、GameObject、Component、Window和Help等菜单,如图2-3所示。每个菜单下都有多种命令,读者可以根据需要选择不同的命令,实现所需要的功能。

File(文件)菜单:打开和保存场景、项目,以及创建游戏。

Edit(编辑)菜单:普通的复制和粘贴功能,以及选择与其相应的设置。

Assets(资源)菜单:与资源创建、导入、导出及同步相关的所有功能。

GameObject(游戏对象)菜单:创建、显示游戏对象,以及为其创建父子关系。

Component(组件)菜单:为游戏对象创建新的组件或属性。

Window(窗口)菜单:显示特定视图(例如,项目资源列表或游戏组成对象列表)。

Help(帮助)菜单:包含到手册、社区论坛及激活许可证的链接。

提示

现在读者只需要了解每个菜单中所包含的常见功能,稍后用到时,将会对各个功能给出更为详细的介绍。

2.1.3 工具栏

工具栏位于菜单栏的下方,主要有变换工具、变换Gizmo切换、播放控件、分层下拉列表和布局下拉列表,这些工具用于控制场景设计面板和游戏预览面板中的显示方式以及变换场景中游戏对象的位置和方向等。如图2-4所示。

Transform(变换)工具:在场景设计面板中用来控制和操控对象。按照从左到右的次序,它们分别是Hand(移动)工具、Translate(平移)工具、Rotate(旋转)工具和Scale(缩放)工具。

Transform Gizmo(变换Gizmo)切换:改变场景设计面板中Translate工具的工作方式。

Play(播放)控件:用来在编辑器内开始或暂停游戏的测试。

Layers(分层)下拉列表:控制任何给定时刻在场景设计面板中显示哪些特定的对象。

Layout(布局)下拉列表:改变窗口和视图的布局,并且可以保存所创建的任意自定义布局。

提示

控制工具也是按照功能分类的,它们主要用来辅助读者在场景设计面板和游戏预览面板中进行编辑和移动,在后面的章节将进行更为完整的介绍。

2.1.4 场景设计面板

场景设计面板是编辑器中最重要的面板之一,其是游戏世界或是关卡的一个可视化表示,如图2-5所示。在这里可以对游戏组成对象列表中的所有物体进行移动、操纵和放置,创建供玩家进行探险和交互的物理空间。

正如读者所看到的,在游戏组成对象列表中列出的对象都会在场景设计面板中显示出来。可以在游戏组成对象列表中单击对象的名字来选中游戏对象,或是在场景设计面板中手动单击它来选中。在场景设计面板或是游戏组成对象列表中单击不同的对象,或是在属性查看器中显示该对象所对应的数据。

说明

如果读者在游戏组成对象列表中可以看到对象列表,但是场景设计面板看上去空空如也,可能是读者的场景设计面板缩得太小,以至于无法看到各个资源。要修正这个问题,可以在游戏组成对象列表中选中某个对象,移动鼠标指针并让它悬停在场景设计面板上,随后按F键来放大显示。

1.摄像机导航

学会怎样在场景设计面板中迅速移动,是使用编辑器时需要掌握的最重要的技能之一(如果读者会使用Autodesk 3ds Max,就可能会熟悉这些控制方法)。

可以把场景设计面板想象成为一个虚拟摄像机的输出或焦点。为了在场景中进行移动,读者需要移动摄像机的视野,就好像读者在看着不同的对象。

Tumble(旋转,Alt+鼠标左键):摄像机会以任意轴为中心进行旋转,从而旋转视图。

Track(移动,Alt+鼠标中键):在场景中把摄像机向左、向右、向上和向下移动。

Zoom(缩放,Alt+鼠标右键或是鼠标滑轮):在场景中缩小或放大摄像机视角。

Flythrough(穿越)模式(鼠标右键+WASD键):摄像机会进入“第一人称”模式,使得读者可以在场景中迅速地移动和缩放。

Center(居中,选择游戏对象并按F键):摄像机会放大并把选中的对象居中显示在视野中。鼠标光标必须位于场景设计面板中,而不是在游戏组成对象列表中的对象上方。

Full Screen(全屏)模式(空格键):按下空格键可以使得当前激活的视图占据编辑器所有可用的显示空间,再次按下它可以返回之前的布局。当前激活的视图就是鼠标光标所悬停的视图。

场景设计面板还包含一个名为“Persp”的特殊工具,如图2-6所示。这一特殊工具可以使读者能够迅速地切换观察场景的角度。

单击Persp上的每个箭头都会改变观察场景的角度,使其沿着一个不同的正交或是二维方向变换,如图2-7所示。单击这一工具中的居中立方体图标,可以把场景设计面板恢复到默认的透视(Perspective)视图。

提示

如果读者更习惯于使用与默认颜色不同的颜色来表示游戏世界的坐标轴,可以执行“Edit→Preference→Colors”命令,然后将其修改为读者喜欢的任何颜色。

2.高级视图操作

场景设计面板的控制栏可以改变摄像机查看场景的方式,如图2-8所示。其默认设置可以使读者对于场景在游戏中渲染后的样子有一个很好的认识,它还会显示一个网格以帮助读者定位和移动对象。通过改变这些设置可以以多种模式查看场景。第一个下拉列表(绘制模式)可以控制在游戏场景中如何绘制对象。默认值为Shaded(带有材质的)——即对象会使用读者为其指定的材质进行绘制;单击这个菜单把绘制模式修改为Wireframe(线框)会显示对象的物理网格,而不带有任何贴图。

提示

这些选择中的任何一个都不会改变游戏的显示方式,它只会改变你在场景设计面板中查看这些对象的方式。

Shaded Wireframe(带有材质的线框)会把对象的贴图和它们的线框叠加在一起显示。Miscellaneous(杂项)下拉列表对开发者游戏场景中的对象进行微调,进而优化是非常有用的;Global Illumination(全局光照模式设置)下拉列表可以对全局光照模式进行设置。

Scene Lighting(场景光照)按钮可以在场景设计面板中是使用默认的内置光照还是使用读者自己实现的光照之间来回切换。如果读者没有在场景中放入任何光源,使用内置光照设置可以由系统为场景自动添加一个光照。

Scene Overlay(场景叠加)可以对摄像机显示的场景进行更新,使得场景的显示方式就像在游戏中一样——网格隐藏了,其他的效果(例如雾化效果、GUI元素以及天空盒)也会渲染。

3.操作对象

除了把摄像机视角四处移动以外,还需要在场景中重新定位和移动对象。这些操作称为对象变换(Object Transform),它们可以处理任意选中对象的位置、旋转和大小(相对尺寸)。对象变换方式有以下两种方式,可以在属性查看器中为这些变换输入新的值,也可以通过变换工具手动地移动和操作这些对象。

q 在游戏组成对象列表或者场景设计面板中单击Camera对象,使其信息显示在属性查看器中,如图2-9所示。每个对象列出的第一个属性就是变换,它保存了该对象当前的位置、旋转和缩放。单击这些输入框中的任意一个进行输入,以修改里面的数字。

提示

也可以通过 Transform(变换)工具来对游戏对象进行变换。读者可以手动地在工具栏中选择一个工具,也可以使用下一节介绍的热键在工具之间快速切换(强烈推荐)。

图2-10所示的Translate工具可以在场景中移动选中的对象的位置,可以沿着3条坐标轴中的某一条移动,也可以在整个空间自由移动。在游戏组成对象列表中单击Sphere对象并且按W键来激活移动工具。抓住其中的一个手柄,可以把对象沿着该坐标轴在游戏世界中移动。

也可以通过单击该工具的中心(或是这个对象自身)在场景中拖动,以将这个对象沿着所有3条坐标系自由地移动。然而,这通常不是最好的方法,因为这样并不能精细地控制放置的位置。你会发现,在不同的正交视图中切换,对于精确地放置对象有很大的帮助。

提示

属性查看器中的值会根据读者的修改而进行更新,并实时在Scene面板中显示修改后的效果。

图 2-11 所示的 Rotate 工具可以把对象按照任何给定的坐标轴进行旋转。可以通过单击Sphere对象并按E键来激活这一工具。

这个工具的手柄就好像3个带有颜色的环包着一个球体。拖动这些手柄或者直接拖动鼠标就可以旋转对象。

注意

这些环的颜色指明了这个对象会按照那哪轴来旋转。例如,如果拖动蓝色的手柄,这个球体就会沿着z轴旋转。这一工具还有一个简单的黄色环围绕在另外3个环的外侧。可以单击并拖动这个黄色的环来让对象按照所有的3条坐标轴进行旋转。

最后一个变换工具是Scale工具,可以在键盘上按R键来激活它,如图2-12所示,这个工具和Translate工具的用法很相似——可以拖着一个手柄,把这个对象在这条坐标轴上缩放,或者使用中间的黄色方块来把对象在所有3条坐标轴上一致地缩放。

2.1.5 游戏预览面板

默认的Tall布局中,游戏预览面板位于“Scene”标签旁边的标签上。在这里,游戏会如同最后创建并发布时一样进行渲染。可以在任何时候使用这个视图在编辑器内测试或试玩游戏,而不需要停下来构建任何东西。如图2-13所示。

提示

虽然现在看这好像不是很重要,但是当读者开始要调整或是平衡成千上万个小细节的时候,能够自由地在编辑器和游戏中随时切换真是太重要了。

要测试游戏,可以选择按下工具栏上的播放控件中的各个按钮以实现相关的操作,如图2-14所示。

单击播放控件中第一个右箭头的按钮,即运行按钮,编辑器会激活游戏预览面板,并且让所有的用户界面变得稍微暗一些,然后开始游戏。

中间的按钮为暂停按钮,用于暂停游戏。按下暂停按钮游戏就会暂停,再次按下暂停按钮可以从暂停的地方继续游戏。

最后一个按钮是单帧播放按钮,游戏在编辑器里运行时按下这个按钮游戏会暂停,以后每按一次按钮游戏就会运行一帧。当开发者需要调试某个特定的、有问题的代码,或是需要看看某些东西在哪里出现错误时,这个按钮就非常有用了。

游戏预览面板和场景设计面板一样,也具有控制栏。控制栏上有一些功能菜单,主要包括Aspect下拉列表、Maximize on Play按钮、Stats按钮以及Gizmos按钮,如图2-15所示。

Aspect下拉列表可以实时改变游戏预览面板的显示比例,即使游戏正在运行。其中,Free Aspect选项允许游戏预览面板填满当前窗口中所有可用的空间,而其他的选项会模拟最常见的显示器的分辨率和比例。当需要为不同大小的屏幕制作GUI时,这会非常方便。

单击Maximize on Play按钮,可以使游戏运行时把游戏预览面板扩大到编辑器视图的整个区域。单击Gizmos(工具)按钮,可以切换游戏中绘制和渲染的所有工具。单击Stats按钮可以显示Statistics页面,该页面用于显示游戏绘制的数据,如图2-16所示。

FPS:每一秒游戏渲染的帧数。这个数值越大,说明游戏运行越流畅。

Batches:最初单独描绘调用被添加到批处理的数量。批处理是引擎试图结合多个物体渲染进行一次描绘调用,以降低CPU开销。为了确保良好的批处理,你应该尽可能多地在不同物体之间共享材质。

Tris:绘制三角形的数目。在游戏开发中应尽量减少三角形数量。

Screen:屏幕的分辨率,和连同其抗锯齿级别和内存的使用量。

Visible Skinned Meshes:渲染蒙皮网格的数量。

Animations:正在播放动画的数量。

2.1.6 游戏组成对象列表

游戏组成对象列表列出了游戏场景中所有的游戏对象。场景中的这些对象是简单地按照字母顺序排列的,随着开发者在游戏中添加或者删除对象,游戏组成对象列表会随着每次修改而进行更新。图2-17所示显示了当前场景设计面板中的内容。

在游戏组成对象列表中选择一个对象并按 Delete 键(或是单击鼠标右键并选择“Delete”),可以从游戏的当前场景中删除这个对象。一个资源的每个实例都会独立地列出来,这使得良好的命名规范变得尤为重要。命名的规范也就是达到见名知意的目的。

游戏组成对象列表中可以为对象建立父子关系,这将使得开发者对游戏的编辑修改更为简单。为对象建立父子关系,基本上就是将一组相似的对象收集到一起并进行分组,使它们位于一个单一的对象(父对象)之下。在该父对象下的所有其他对象,都称为子对象,如图2-18所示。

说明

在图2-18所示的这个例子中,一个名为“GameObject”的游戏对象就是父对象,其下有3个子对象分别为Sphere、Plane和Cube。单击GameObject旁边的箭头可以展开或是收起这一分组,这就好像Project视图中的文件夹一样。

建立父子关系除了会提供一种快捷的方式来把有相似功能的对象组织在一起以外,还带来了另一个重要的好处,即对父对象进行移动或是操作时,也会依次地对其下所有的子对象进行同样的操作,也就是说,子对象继承了父对象的基本变换数据。

▲图2-18 游戏组成对象列表中的父子关系

如果读者仍然无法确切地理解父子关系,可以想象一下一个普通人的身体。手臂以身体为父对象,手则以手臂的末端为父对象。向前移动身体(父对象)也会让手臂随着它移动,这也会依次移动手(手臂和手是两个子对象)。然而,也可以对手进行移动和旋转而不需要移动身体和手臂。

提示

为对象建立父子关系,可以使得对大量对象的移动变得更为方便和精确,因此,读者应该尽可能地使用这种方法。后面将会介绍建立父子关系的一些更为高级的概念。

2.1.7 项目资源列表

项目资源列表中列出了项目中的所有文件,包括脚本、贴图、模型、场景等文件,并且这些文件都组织到一个Assets(资源)文件夹中。Assets文件夹包含读者创建或导入的所有文件资源。如图2-19所示,项目资源列表显示了Assets文件夹下的所有文件资源。

项目资源列表显示了这个项目所包含的全部资源,并且这些资源在项目中的组织方式与计算机资源管理器中的组织方式完全一致。文件夹旁边的箭头表示这是一个嵌套层,单击这个箭头就会展开该文件夹里的内容。在项目资源列表中简单地拖曳,就可以在不同文件夹中移动和组织文件。

提示

在Unity编辑器外部移动资源文件时要非常小心,实际上,应该不惜一切代价避免这样做。如果需要重新组织或移动某个资源,读者应该在项目资源列表内部进行。否则的话,可能会损坏或是删除和这个资源相关联的源数据或是链接,甚至可能在此过程中损坏项目。

可以在项目资源列表中直接打开文件并进行编辑。如果发现需要对任何文件的内容(如脚本文件)进行调整或是修改,只须双击这个文件就就可以在默认编辑器中打开它。正常保存这个文件,Unity编辑器就会自动地把这个文件更新到项目中。

如果项目中包含了成千上万个文件,开发者可能会发现通过眼睛自己去找到某个文件非常不方便,甚至是完全不可能的。因此,项目资源列表中提供了搜索栏,可以在搜索栏中输入文件名的任何部分,在项目各个层次的子目录中进行查找。

说明

要重命名一个文件或者文件夹,可以缓慢地单击这个文件两次,或是选择想要重命名的文件并按下F2键。当完成重命名后,可以按Enter键确认修改。

项目资源列表中单击鼠标右键,就会弹出一个高级选项菜单,包含导入资源和外部项目控制器同步以及对资源的操作,如图2-20所示。后面会详细介绍这些内容。

2.1.8 属性查看器

属性查看器显示了游戏中每个游戏对象所包含的所有组件的详细属性。单击Plane对象,其所有组件的详细属性就会显示在属性查看器中,如图2-21所示。这些组件都按照添加的先后顺序进行排列,读者可以根据需要手动改变它们的位置。

属性查看器中一般包含很多属性信息,这些属性乍看上去让人无所适从,其实,每个对象对应的所有属性查看器都遵循一些基本原则。在属性查看器的顶端是这个对象的名称,然后是该对象的各个方面的一个列表,如Transform(变换)组件和Mesh Collider(网格碰撞体)组件。

提示

这些不同种类的属性中的每一个都会在稍后给出更为详细的介绍,但是在这里,只需要知道通过它可以任意修改对象所拥有的属性信息。

属性查看器中的每个属性都有与其对应的帮助按钮和上下文菜单。单击帮助按钮会显示参考手册中和这个属性相关的帮助文档。单击上下文菜单会显示仅仅与该属性相关的选项,也可以在此把这个属性重置为其他默认值。

2.1.9 状态栏与控制台

状态栏和控制台是Unity集成开发环境中两个很有用的调试工具,如图2-22所示。状态栏总是出现在编辑器的底部。可以通过菜单执行“Window→Console”命令或按快捷键Ctrl+Shit+C打开控制台,也可以单击状态栏来打开控制台。

当按下“播放”按钮开始测试项目或是导出运行项目时,在状态栏和控制台都会显示出相关的提示信息,也可以在脚本中让项目向控制台和状态栏输出一些信息,这有助于调试和修复错误。项目遇到的任何错误、消息或者警告,以及和这个特定错误相关的任何细节,都会显示在这里。

2.1.10 动画视图

动画视图使读者可以在这里查看或是调整动画曲线。这个窗口在默认情况下并不打开,但是可以通过执行“Window→Animation”命令或按快捷键Ctrl+6来查看它,如图2-23所示。动画视图会作为一个单独的浮动窗口弹出,读者可以四处移动它并随意改变其大小。

提示

在稍后的讲解中,读者会看到如何使用这个视图来查看动画剪辑或是在3D动画应用程序之外更新数据。

2.1.11 动画控制器编辑视图

动画控制器编辑视图用于编辑动画控制器。这个窗口在默认情况下也并不打开,读者可以通过执行“Window→Animator”命令或在项目资源列表中双击一个动画控制器文件来打开它,如图2-24所示。在动画控制器编辑视图中可以添加和删除动画。

2.2 菜单栏

本节将对菜单栏中的各个菜单及其下属的子菜单进行详细讲解,使读者通过对菜单栏的学习对Unity各项功能有一个系统、全面的认识与了解,在今后的开发过程中能够熟练地运用各个菜单,以满足开发的需求。

2.2.1 文件(File)

本节将对菜单栏中的“文件(File)”菜单进行详细讲解,并对其下的每一个命令都进行细致的介绍,使读者能够清楚地理解“File”菜单的功能和作用,以及其下各个命令的功能与用途,并在开发过程中进行熟练的操作。

在Unity集成环境中,单击“File”菜单,会弹出一个下拉菜单,其中包括的各命令及其对应的快捷键如图2-25所示。

1.New Scene

“New Scene” 命令功能为新建场景,即新建一个游戏场景。每一个新创建的游戏场景包含了一个Main Camera(主摄像机)和一个Directional Light(平行光光源),可以根据需要在场景中添加相应的GameObject(游戏对象)。如图2-26所示。

2.Open Scene

“Open Scene” 命令功能为打开场景,即打开以前所保存的场景。单击Open Scene后会弹出一个“Load Scene”对话框,选择所要打开的场景文件(后缀名为“.unity”的文件),单击“打开”按钮即可打开场景文件。如图2-27所示。

3.Save Scene

“Save Scene” 命令功能为保存场景,即保存当前所搭建的场景。如果是第一次保存当前场景,单击命令Save Scene就会弹出一个Save Scene对话框,在文件名处输入文件名称,单击“保存”按钮,就会生成一个场景文件,如图2-28所示。如果之前保存过该场景,单击命令Save Scene后,之前保存的场景文件就会被当前的场景覆盖,不会弹出Save Scene对话框。

4.Save Scene as...

“Save Scene as...”命令功能为场景另存为„,即把当前的场景另存为一个新的场景文件。单击命令Save Scene as...时,就会立刻弹出一个Save Scene对话框,在文件名处输入文件名称,单击保存按钮,就会生成一个新的场景文件。如图2-29所示。

5.New Project...

“New Project...” 命令功能为新建项目工程,即创建一个新的项目工程。单击命令New Project...时,就会立刻弹出一个New Project对话框,如图2-30所示。在Project name处输入项目名称,在Location处选择合适的路径,在Asset packages...处选择所需要导入的资源包,新建项目默认为3D项目(如果想要创建2D项目,则需要选中“2D”字样的选项),最后单击“Create project”按钮,就会自动创建一个项目并打开Unity开发环境。

6.Open Project...

“Open Project...” 命令功能为打开项目工程,即打开以前所创建的项目。单击命令 Open Project..时,就会立刻弹出一个Recent projects对话框,以前创建的项目都会显示在列表中,如图 2-31所示,单击项目名称即可打开项目。如果想要打开列表中没有的项目,则需要单击 Open other...按钮,找到所要打开的项目,单击选择文件夹按钮以打开选定项目,如图2-32所示。

7.Save Project

“Save Project”命令功能为保存项目工程。单击命令Save Project...时,会保存当前正在进行编辑的项目。

8.Build Settings...

“Build Settings...” 命令功能为发布设置,即在发布游戏前对一些准备工作的设置单击命令Build Settings...时,就会立刻弹出Build Settings对话框,如图2-33所示。在Platform下选择该项目发布后所要运行的平台,同时可以单击Player Setting...按钮,在Inspector视图中针对要发布的平台做相应的参数设置,如图 2-34 所示。完成设置后,单击“Build”按钮,为生成的安装文件添加文件名,然后单击保存按钮,开始生成安装文件,如图2-35所示。

9.Build & Run

“Build & Run” 命令功能为发布并运行,即在编译完游戏后,直接将游戏发布到目标平台上。

10.Build in Cloud...

“Build in Cloud...”命令功能为云版本发布,即在云端搭建的调制环境中测试程序。

11.Exit

“Exit”命令功能为退出,即退出Unity程序。

提示

游戏要发布到各个平台和手机品牌的话,在线下找齐所有的实物机型进行测试是一件非常麻烦的事情,而在Unity Cloud Build中,开发者可以拥有一个横跨所有平台的编译、测试环境。

2.2.2 编辑(Edit)

本节将对菜单栏中的编辑(Edit)菜单进行详细讲解,并对其下的每一个命令都进行细致的介绍,使读者能够清楚地理解Edit菜单的功能和作用,以及其下各个命令的功能与用途,并在开发过程中进行熟练的操作。

在Unity集成环境中,单击Edit菜单,会弹出一个下拉菜单,其中包括的各命令及其对应的快捷键如图2-36所示。

1.Undo

“Undo”命令功能为撤销,即取消当前的操作。该操作在开发中使用较多,其快捷键为“Ctrl+Z”。

2.Redo

“Redo”命令功能为Undo的反向操作,即重新做一遍当前的操作,其快捷键为“Ctrl+Y”。

3.Cut

“Cut”命令功能为剪切,其快捷键为“Ctrl+X”。

4.Copy

“Copy”命令功能为复制,其快捷键为“Ctrl+C”。

5.Paste

“Paste”命令功能为粘贴,其快捷键为“Ctrl+V”。

6.Duplicate

“Duplicate”命令功能为复制并粘贴, 其快捷键为“Ctrl+D”。

7.Delete

“Delete”命令功能为删除,其快捷键为“Shift+Del”。

8.Frame Selected

“Frame Selected” 命令功能为居中并最大化显示当前选中的物体,即若要在场景设计面板中近距离观察所选中的GameObject,便可单击Frame selected命令,快捷键为“F”,通过本功能可以方便地切换观察视角,极大地方便工程的开发与设计。

9.Lock View to Selected

“Lock View to Selected”命令功能为居中并最大化显示层级视图中选中的物体,即在层级视图(Hierarchy)中选中物体后,单击Lock View to Selected命令,该物体就会在场景中居中并最大化显示。所实现的效果与Frame Selected相同。

10.Find

“Find”命令功能为查找,即查找场景中的对象,其快捷键为“Ctrl+F”。

11.Select All

“Select All”命令功能为选择全部,快捷键为“Ctrl+A”。

12.Preferences...

“Preferences...”命令功能为偏好设置,即对 Unity 集成开发环境的相应参数进行设置。单击Preferences...命令后,会立刻弹出一个Unity Preferences对话框,里面有6项设置,分别为“General”“External Tools”“Colors”“Keys”“GI Cache”和“Cache Server”。“Preferences…”命令下属选项及其具体含义如表2-1所示。

(1)单击General(综合设置)选项,会进入综合设置界面,如图2-37所示。该界面下是在整体上对Unity集成开发环境进行的一些相关设置,分别是“Auto Refresh”“Load Previous Project on Startup”“Compress Assets on Import”“Disable Editor Analytics(Pro Only)”“Show Asset Store search hits”“Verify Saving Assets”“Editor Skin”和“Enable Alpha Numeric Sorting”。General选项下属子项及其具体含义如表2-2所示。

(2)单击External Tools(外部工具)选项,会进入外部工具设置界面,如图2-38所示。该界面下可以对与Unity相关的一些外部编辑工具进行设置,分别是“External Script Editor”“External Script Editor Args”“Editor Attaching”“Image Application”“Revision Control Diff/Merge”和“Android SDK Location。External Tools选项下属子项及其具体含义如表2-3所示。

(3)单击Colors(颜色)选项,会进入颜色设置界面,如图2-39所示。该界面下可以对各个窗口、工具的背景颜色、显示颜色进行设置。开发人员可根据自己的使用习惯对颜色进行选择设置,对Unity集成开发环境进行自我装饰。

(4)单击Keys(键值)选项,会进入键值设置界面,如图2-40所示。该界面下可以对Unity集成开发环境中需要改变的键值进行设置,一般情况下使用默认的设置即可,也可根据个人使用习惯进行修改。

(5)单击GI Cache(实时光照缓存设置)选项,会进入实时光照缓存设置界面,如图2-41所示。该界面下可以对与Unity实时光照缓存进行设置,分别是“Maximum Cache Size (Gb)”“Custom Cache Location”“Cache compression”“Clean Cache”“Cache Size”和“Cache Location。GI Cache选项下属子项及其具体含义如表2-4所示。

(6)单击Cache Server(缓存服务器)选项,会进入缓存服务器设置界面,如图2-42所示。该界面下可以对缓存服务器进行设置。当启动缓存服务器,即勾选Use Cache Server的复选框,就需要在IP Addess(IP地址)栏中填入正确的IP地址,否则不要启用。

13.Modules...

“Modules...”命令功能为模块管理,即模块管理器,展示了针对各个平台的回放引擎,以及拓展的性能优化工具。如图2-43所示。

14.Play

“Play”命令功能为播放/运行,即播放当前场景动画,其快捷键为“Ctrl+P”,相当于单击工具栏中的播放按钮,如图2-44 所示。场景动画效果将在游戏预览面板中显示。

15.Pause

“Pause”命令功能为暂停/中断,即暂停当前场景动画,其快捷键为“Ctrl+Shift+P”,相当于单击工具栏中的“暂停”按钮,如图2-45所示。场景动画效果将在游戏预览面板中显示。

16.Step

“Step”命令功能为单帧,即播放当前场景动画的下一帧,其快捷键为“Ctrl+Alt+P”,相当于单击工具栏中的“下一帧”按钮,如图2-46所示。场景动画效果将在游戏预览面板中显示。

17.Selection

“Selection”命令功能为选择,即选择所要载入/存储的游戏对象的编号。选择命令中的加载选项可载入以前所保存的游戏对象,选择所要载入相应游戏对象的编号,即可载入相应的游戏对象,如图2-47所示;选择命令中的存储选项,即可保存当前场景设计面板中所选中的游戏对象,并赋予相应的编号,如图2-48所示。

18.Project Settings

“Project Settings”命令功能为工程设置,即对工程进行相应的设置。选中命令Project Settings,就会弹出其选项,如图2-49所示。其中的各个选项是对工程的具体设置选项,具体含义如表2-5所示。

(1)单击Input(输入)选项,在Unity集成开发环境的Inspector视窗中就会出现Input选项的具体设置,可以根据需要对其中的参数做具体的调整,如图2-50所示。

(2)单击Tags&Layers(标签和层)选项,在Unity集成开发环境的Inspector视窗中就会出现Tags&Layers选项的具体设置,可以根据需要对其中的参数做具体的调整,如图2-51所示。

(3)单击Audio(音频)选项,在Unity集成开发环境的Inspector视窗中就会出现Audio选项的具体设置,可以根据需要对其中的参数做具体的调整,如图2-52所示。

(4)单击Time(时间)选项,在Unity集成开发环境的Inspector视窗中就会出现Time选项的具体设置,可以根据需要对其中的参数做具体的调整,如图2-53所示。

(5)单击Player(播放)选项,在Unity集成开发环境的Inspector视窗中就会出现Player选项的具体设置,可以根据需要对其中的参数做具体的调整,如图2-54所示。

(6)单击Physics(物理属性)选项,在Unity集成开发环境的Inspector视窗中就会出现Physics选项的具体设置,可以根据需要对其中的参数做具体的调整,如图2-55所示。

(7)单击Physics2D(2D物理属性)选项,在Unity集成开发环境的Inspector视窗中就会出现Physics2D选项的具体设置,可以根据需要对其中的参数做具体的调整,如图2-56所示。

(8)单击Quality(质量)选项,在 Unity集成开发环境的Inspector视窗中就会出现Quality选项的具体设置,可以根据需要对其中的参数做具体的调整,如图2-57所示。

(9)单击Graphics(图形)选项,在Unity集成开发环境的Inspector视窗中就会出现Graphics选项的具体设置,可以根据需要对其中的参数做具体的调整,如图2-58所示。

(10)单击Network(网络)选项,在Unity集成开发环境的Inspector视窗中就会出现Network选项的具体设置,可以根据需要对其中的参数做具体的调整,如图2-59所示。

(11)单击Editor(编辑)选项,在Unity集成开发环境的Inspector视窗中就会出现Editor选项的具体设置,可以根据需要对其中的参数做具体的调整,如图2-60所示。

(12)单击Script Execution Order(脚本执行顺序)选项,在Unity集成开发环境的Inspector视窗中就会出现Script Execution Order选项的具体设置,可以根据需要对其中的参数做具体的调整,如图2-61所示。

19.Network Emulation

“Network Emulation”命令功能为网络模拟,即选择适当的网络传输方式,如图2-62所示。

20.Graphics Emulation

“Graphics Emulation”命令功能为图形模拟,即选择所需要的着色器模型。如图2-63所示。

21.Snap Settings...

“Snap Settings...”命令功能为对齐设置,即适当的对齐方式,可以根据需要修改适当的参数。如图2-64所示。

2.2.3 资源(Assets)

本节将对菜单栏中的资源(Assets)菜单进行详细讲解,并对其下的每一个命令都进行细致的介绍,使读者能够清楚地理解Assets菜单的功能和作用。在Unity集成环境中,单击Assets菜单,会弹出一个下拉菜单,其中包括的各命令及其对应的快捷键如图2-65所示。

Create

“Create”命令的功能为创建Unity内置的资源,其选项为Unity内置的各个资源,如图2-66所示。所创建的任何资源都会出现在项目资源列表中,可分别对创建的各个资源根据需要进行相应的编辑,进而方便简单地实现具体的功能。

(1)单击Create的选项Folder,就会在项目资源列表中创建一个项目文件夹,可以根据需要修改文件夹。单击C# Script菜单,就会在项目资源列表中创建一个C#脚本,可以根据需要修改脚本名称,在脚本中用C#编写代码,实现具体的功能。

(2)单击Javascript选项,就会在项目资源列表中创建一个Javascript脚本,可以根据需要修改脚本名称,在脚本中用Javascript编写代码,实现具体的功能。单击Shader选项,就会在项目资源列表中创建一个着色器脚本,在脚本中用ShaderLab语言或者Cg.GLSL语言编写着色器。

(3)单击Compute Shader选项,就会在项目资源列表中创建一个计算着色器脚本,可以根据需要修改脚本名称,在脚步中编写Compute Shader,实现具体的功能。单击Prefab选项,就会在项目资源列表中创建一个预制件,其作用是通过代码批量地创建相同的游戏对象。

(4)单击Audio Mixer选项,就会创建一个音频混合器,如图2-67所示;可以根据需要混合不同的声音源来达到需要的效果。单击Animator Override Controller选项,就会创建一个动画重新控制器,如图2-68所示,用来重写给定avatar的控制器的某些动画剪辑。

(5)单击Avatar Mask选项,就会创建一个身体遮罩资源,如图2-69所示。通过身体遮罩可以对动画里面特定的身体部位进行激活或禁止。身体遮罩在模型导入检视面板中的动画选项卡中和Animation Layersd(动画图层)中被应用。

(6)单击Material选项,就会在项目资源列表中创建一个材质资源,如图2-70所示;可以根据需要在属性查看器中选择材质的颜色、渲染管线以及材质的渲染方式。单击Lens Flare选项,就会在项目资源列表中创建一个光晕资源,如图2-71所示;可以选择适当的光晕2D纹理贴图。

(7)单击Render Texture选项,就会创建一个渲染纹理资源,如图2-72所示;可以对创建的渲染纹理资源进行具体的设置,开发者可以根据实际的需要进行相应的设置。单击 Lightmap Parameters选项,就会创建一个光照贴图参数资源,如图2-73所示。

(8)单击Animator Controller选项,就会创建一个动画控制器,如图2-74所示;开发者可以根据实际的开发需求,在项目资源中双击打开进行设置,以达到开发的实际需求。单击Animation选项,就会创建一个动画片段资源,如图2-75所示。

(9)单击Physic Material选项,就会创建一个物理材质,如图2-76所示;开发者可以根据实际的开发需要,在属性查看器中设置相应的参数。单击 Physics2D Material 选项,就会创建一个2D物理材质,如图2-77所示。

(10)单击GUI Skin选项,就会创建一个绘制样式资源,如图2-78所示。对2D界面中的图形绘制进行具体的设置,开发者可以根据实际的开发需求,在属性查看器中对具体的参数进行设置。单击Custom Font选项,就会创建一个文本样式资源,如图2-79所示。

(11)单击Shader Variant Collection选项,就会创建一个着色器列表资源,如图2-80所示;可以根据需要从列表中添加或删除着色器。单击 Legacy 选项下的子项 Cubemap,就会创建一个立方体纹理映射资源,如图2-81所示;可以分别对立方体的6个面进行纹理设置。

1.Show in Explorer

“Show in Explorer”命令的功能为在资源管理器中显示资源文件。单击Show in Explorer命令,就会将当前选中的资源在资源管理器中显示出来。在资源管理器中将显示此项目所有的资源,如图2-82所示。

2.Open

“Open”命令的功能为打开项目资源列表中的资源文件。选中一个资源,然后单击Open命令,或者双击这个资源就会使用默认的编辑器打开这个资源文件,此时就可以对这个资源文件进行编辑。

3.Delete

“Delete”命令的功能为删除项目资源列表中的资源文件。选中一个资源文件,然后单击Delete命令,或是按下 Delete 键就会弹出是否删除资源文件的确认对话框,如图 2-83 所示。然后单击Delete按钮就会删除这个资源文件。

4.Import New Asset...

“Import New Asset...”命令的功能为导入工程所需要的资源。单击Import New Asset...命令,就会立刻弹出一个Import New Asset对话框,如图2-84所示。查找需要导入的资源文件,选中并单击Import按钮即可成功导入。

提示

为了方便起见,导入较小的资源时没必要进行这些烦琐的操作,直接选中要导入的资源并将其拖曳迚Unity集成开发环境的项目资源列表,即可成功导入。

5.Import Package

“Import Package”命令的功能为导入工程所需要的Unity资源包。单击Import Package命令下属的“Custom Package”选项就会弹出“Import Package”对话框,如图2-85所示。查找需要导入的资源包,选中并单击打开按钮就会弹出导入进度框。

6.Export Package...

“Export Package...”命令的功能为将所需要的资源导出资源包。选中需要导出的资源文件后单击Export Package...命令,就会立即弹出一个Export Package对话框,如图2-86所示。单击Export...按钮即可导出资源包。

7.Find References In Scene

“Find References In Scene”命令的功能为在场景中找出使用选中的资源的游戏对象。在项目资源列表中选中一个资源,单击Find References In Scene命令,就会在游戏组成对象列表中显示使用该资源的游戏对象。

8.Select Dependencies

“Select Dependencies”命令的功能为选择游戏对象的依赖资源。在游戏组成对象列表中选中需要找出依赖资源的游戏对象,然后单击Select Dependencies命令,就会在项目资源列表中显示出游戏对象的依赖资源。

9.Refresh

“Refresh”命令的功能为刷新项目资源列表。在Unity编辑器外部改动项目资源后,需要单击Refresh命令来刷新项目资源列表。

10.Reimport

“Reimport”命令的功能为重新导入项目资源。选中需要重新导入的项目资源,然后单击Reimport命令就会将选中的资源重新导入项目。

11.Reimport All

“Reimport All”菜单的功能为重新导入项目的所有资源。单击Reimport All命令,就会将项目资源列表中的所有资源重新导入项目。

12.Run API Updater...

“Run API Updater...”命令的功能为将脚本中已经过时的API自动更新为最新的API。选中旧版项目中含有过时的API的脚本,单击Run API Updater...命令就会自动将其更新为最新的API。脚本中不是所有过时的API都能自动更新为最新的API,有些需要手动修改代码。

13.Sync MonoDevelop Project

“Sync MonoDevelop Project”命令的功能为将Unity项目脚本同步到MonoDevelop项目中。单击Sync MonoDevelop Project命令,就会将Unity项目脚本同步到MonoDevelop项目中并且在MonoDevelop中打开该项目。

2.2.4 游戏对象(GameObject)

本节将对菜单栏中的游戏对象(GameObject)菜单进行详细讲解,并对其下的每一个命令都进行细致的介绍,使读者能够清楚地理解GameObject菜单的功能和作用。单击GameObject菜单,会弹出一个下拉菜单,其中包含的各命令及其对应的快捷键如图2-87所示。

1.Create Empty

“Create Empty”为创建空游戏对象。空游戏对象就是不带有任何组件的游戏对象,主要用途是当其他游戏对象进行分组时做为其父对象。单击命令Create Empty,或按快捷键Ctrl+Shift+N,就会在场景中创建一个空游戏对象。

2.Create Empty Child

“Create Empty Child”为创建子游戏对象。选中一个游戏对象,然后单击菜单Create Empty Child,或按快捷键Alt+Shift+N就会为选中的游戏对象创建一个子游戏对象。

3.3D Object

“3D Object”下属的选项的功能是创建3D游戏对象。其下属的选项分别为“Cube”“Sphere”“Capsule”“Cylinder”“Plane”“Quad”“Ragdoll...”“Terrain”“Tree”“Wind Zone和3DText,如图2-88所示。各选项及其具体含义如表2-6所示。

4.2D Object

“2D Object”下属的选项的功能是创建2D游戏对象。该命令主要用于开发2D游戏。其下属的选项只有一个游戏对象,该对象为开发2D游戏必须使用的Sprite对象,如图2-89所示。

5.Light

“Ligth”下属的选项的功能是创建光源对象。其下属的选项分别为“Directional Ligth”“Point Ligth”“Spotligth”“Area Light”“Reflection Probe”和“Light Probe Group”,如图2-90所示。各选项及其具体含义如表2-7所示。

6.Audio

“Audio”下属的选项的功能是创建与声音有关的游戏对象。其下属的选项分别为“Audio Source”和“Audio Reverb Zone”,如图2-91所示。Audio Source选项的功能为创建声音源,Audio Reverb Zone选项的功能为创建音频混响区对象。

7.UI

“UI”下属的选项的功能是创建与搭建UI界面有关的游戏对象。其下属的命令分别为“Panel”“Button”“Text”“Image”“Raw Image”“Slider”“Scrollbar”“Toggle”“Input Field”“Canvas”和“Event System”,如图2-92所示。各选项及其具体含义如表2-8所示。

8.Particle System

“Particle System”的功能为创建粒子系统对象。单击Particle System命令,就会在场景中出现一个粒子系统对象。在游戏组成对象列表中选中该粒子对象就会在属性查看器中显示此粒子系统对象的具体属性信息,开发者可以根据需要对属性进行修改,以达到具体需要的效果。Particle System组件如图2-93所示。

9.Camera

“Camera”的功能为创建摄像机对象。单击“Camera”命令,就会在场景中创建一个摄像机对象。在游戏组成对象列表中选中该摄像机对象,就会在属性查看器中显示此摄像机的具体属性信息,开发者可以根据需要对属性进行修改,以达到具体需要的效果。Camera组件如图2-94所示。

提示

在每个场景里系统会默认自动创建一个摄像机,并取名为“Main Camera”,一般情况下会达到项目要求。

10.Center On Children

“Center On Children”命令的功能为将父对象的位置设置到子对象的中心点上。在游戏组成对象列表中选中一个父对象,然后单击Center On Children命令,就会将该父对象的位置移动到所有子对象的平均中心点上。

11.Make Parent

“Make Parent”命令的功能为将多个游戏对象创建父子关系。在游戏组成对象列表中选中多个游戏对象,然后单击 Make Parent 命令,就会将除选中的最上面的对象外的其他所有游戏对象设置为最上面的对象的子对象。

12.Clear Parent

“Clear Parent”命令的功能为解除子对象与父对象的父子关系。在游戏组成对象列表中选中多个游戏子对象,然后单击Clear Parent命令,就会解除选中的多个游戏子对象与父对象的父子关系,使其成为独立对象。

13.Apply Changes To Prefab

“Apply Changes To Prefab”命令的功能为将使用预制件实例化的游戏对象的改变应有到预制件上。在游戏组成对象列表中选中使用预制件实例化的游戏对象,然后单击Apply Changes To Prefab命令,就会将游戏对象的改变应有到预制件上。

14.Set as first sibling

“Set as first sibling”命令的功能为在游戏组成对象列表中将子对象移动到其父对象下属的所有子对象的最上面。选中需要移动的子对象,然后单击Set as first sibling命令或者按快捷键Ctrl+=,就会将选中的子对象移动到其父对象下属的所有子对象的最上面。

15.Set as last sibling

“Set as last sibling”命令的功能为在游戏组成对象列表中将子对象移动到其父对象下属的所有子对象的最下面。选中需要移动的子对象,然后单击Set as last sibling命令,或者按快捷键Ctrl+-,就会将选中的子对象移动到其父对象下属的所有子对象的最下面。

16.Move To View

“Move To View”命令的功能为移动游戏对象与视窗的中心位置。在游戏组成对象列表中选中一个游戏对象,然后单击Move To View命令,就会将选中的游戏对象移动到场景设计面板的居中位置,使其在场景设计面板中全部显示。

17.Align With View

“Align With View”命令的功能为移动游戏对象与视窗对齐。在游戏组成对象列表中选中一个游戏对象,然后单击Align With View命令,就会将选中的游戏对象对齐到视窗。

18.Align View to Selected

“Align View to Selected”命令的功能为移动视窗与游戏对象。在游戏组成对象列表中选中一个游戏对象,然后单击Align With View命令,就会将场景设计面板的中心位置移动到选中对象的中心点,但是所选中的游戏对象的位置不变。

19.Toggle Active State

“Toggle Active State”命令的功能为控制游戏对象的激活状态。选中游戏对象,如果游戏对象处于激活状态,单击Toggle Active State命令或者按快捷键Alt+Shift+A,该游戏对象就会变为未激活状态,在游戏组成队形列表中该游戏对象就会变暗,反之亦然。

2.2.5 组件(Component)

本节将对菜单栏中的组件(Component)菜单进行详细讲解,并对其下的每一个命令都进行细致的介绍,使读者能够清楚地理解Component菜单的功能和作用。在Unity集成环境中,单击Component菜单,会弹出一个下拉菜单,其中包含的各命令及其对应的快捷键如图2-95所示。

1.Add...

“Add...”命令的功能是为场景中的游戏对象添加组件。单击这个命令按钮或是按下Ctrl+Shift+A快捷键时,就会在属性查看器的下方的Add Component弹出下拉列表菜单,如图2-96所示。然后可根据需要添加组件。

2.Mesh

“Mesh”下属选项的功能是为游戏对象添加与网格相关的组件。其下属的选项分别为“Mesh Filter”“Text Mesh”“Mesh Renderer”和“Skinned Mesh Renderer”,如图2-97所示。各选项及其具体含义如表2-9所示。

3.Effects

“Effects”下属选项的功能是为游戏对象添加Unity集成开发环境自带的特殊显示效果的相关组件。其下属的选项如图2-98所示,分别是“Particle System”“Trail Renderer”“Line Renderer”“Lens Flare”“Halo”“Projector”和“Legacy Particles”。

其中Legacy Particles还有子选项,如图2-99所示,分别为“Ellipsoid Particle Emitter”“Mesh Particle Emitter”“Particle Animator”“World Particle Collider”和“Particle Renderer”。读者根据实际的开发需求,在场景中可以添加适当的特效。各选项及其具体含义如表2-10所示。

4.Physics

“Physics”下属选项的功能是为游戏对象添加物理属性组件。其下属选项如图2-100所示,分别为刚体、控制器、碰撞器、关节、力等几部分,具体如表2-11所示。读者可以根据实际的开发需求,为场景的游戏对象添加适当的物理特效。

5.Physics 2D

“Physics 2D”下属选项的功能是为 2D 游戏对象添加物理属性组件。其下属选项如图 2-101所示,分别为2D刚体、2D碰撞器、2D关节等几部分,具体如表2-12所示。读者可以根据实际的开发需求,为场景的2D游戏对象添加适当的2D物理特效。

6.Navigation

“Navigation”下属选项的功能是为游戏对象添加导航组件。其下属的选项分别为“Nav Mesh Agent”“Off Mesh Link”和“Nav Mesh Obstacle”,如图2-102所示。这些组件的具体用法将在后面进行具体介绍。

7.Audio

“Audio”下属选项的功能是为场景添加音效组件。其下属选项如图2-103所示,分别为“Audio Listener”“Audio Source”“Audio Reverb Zone”“Audio Low Pass Filter”“Audio High PassFilter”“Audio Echo Filter”“Audio Distortion Filter”“Audio Reverb Filter”和“Audio Chorus Filter”。各选项及其具体含义如表2-13所示。

8.Rendering

“Rendering”下属选项的功能是添加对场景的效果进行渲染工作的相关组件。其下属选项如图2-104所示,分别为“Camera”“Skybox”“Flare Layer”“GUI Layer”“Light”“Light Probe Group”“Reflection Probe”“Occlusion Area”“Occlusion Portal”“LOD Group”“Sprite Renderer”“Canvas Renderer”“GUI Texture”和“GUI Text”。各选项及其具体含义如表2-14所示。

9.Layout

“Layout”下属选项的功能是添加与UI界面布局相关的组件。其下属选项如图2-105所示,分别为“Rect Transform”“Canvas”“Canvas Group”“Canvas Scaler”“Layout Element”“Content Size Fitter”“Aspect Ratio”“Horizontal Layout Group”“Vertical Layout Group”和“Grid Layout Group”。各选项及其具体含义如表2-15所示。

10.Miscellaneous

“Miscellaneous”下属选项的功能是添加组件菜单里面一些单独的组件。其下属选项如图2-106所示,分别为“Animator”“Animation”“Network View”“Wind Zone”“Terrain”和“Billboard Renderer”“Cloud Service Handler Behaviour”。各选项及其具体含义如表2-16所示。

11.Event

“Event”下属选项的功能是添加与事件监听相关的组件。其下属选项如图2-107所示,分别为“Event System”“Event Trigger”“Physics 2D Raycaster”“Physics Raycaster”“Standalone Input Module”“Touch Input Module”和“Graphic Raycaster”,这些组件的具体用法将在后面进行具体介绍。

12.UI

“UI”下属选项的功能是添加与搭建UI界面相关的组件。其下属选项如图2-108所示,分别为“Effects”“Image”“Text”“Raw Image”“Mask”“Button”“Input Field”“Scrollbar”“Scroll Rect”“Slider”“Toggle”“Toggle Group”和“Selectable”。各选项及其具体含义如表2-17所示。

2.2.6 窗口(Window)

本节将对菜单栏中的窗口(Window)菜单进行详细讲解,并对其下的每一个子菜单都进行细致的介绍,使读者能够清楚地理解Window菜单的功能和作用。在Unity集成环境中,单击Window菜单,会弹出一个下拉菜单,其中包含的各命令及其对应的快捷键如图2-109所示。

1.Next Window

“Next Window”命令的功能为将当前的视图转换到下一个窗口。单击命令Next Window,当前的视图会自动切换到下一个窗口,实现在不同的窗口视角下观察同一物体,可以更加真实地观察场景的搭建效果以及游戏中的真实效果,有助于修改。

2.Previous Window

“Previous Window”命令的功能为将当前正在操作的窗口。单击命令Previous Window,会将当前操作的窗口自动编辑为当前窗口,以方便开发者的开发。

3.Layouts

“Layouts”命令的功能为设置整个Unity集成开发环境的整体布局,其包含多个选项,如图2-110所示,分别为布局菜单、保存布局菜单、删除布局菜单和恢复出厂设置菜单。单击2 by 3选项,Unity集成开发环境会展现第一种布局。

4.Scene

“Scene”命令的功能为打开场景设计面板。单击命令Scene或按快捷键Ctrl+1,即可打开场景设计面板。如图2-111所示。

5.Game

“Game”命令的功能为打开游戏预览面板。单击命令Game或是按快捷键 Ctrl+2,即可打开游戏预览面板。如图2-112所示。

6.Inspector

“Inspector”命令的功能为打开属性查看器。单击命令Inspector或是按快捷键Ctrl+3,即可打开属性查看器,如图2-113所示。

7.Hierarchy

“Hierarchy”命令的功能为打开游戏组成对象窗口。单击命令Hierarchy或按快捷键Ctrl+4,即可切换到游戏组成对象列表,如图2-114所示。

8.Project

“Project”命令的功能为打开项目资源列表。单击命令Project或按快捷键 Ctrl+5,即可打开项目资源列表,如图2-115所示。

9.Animation

“Animation”命令的功能为打开动画设计面板。单击命令Animation或是按快捷键Ctrl+6,即可打开动画设计面板,如图2-116所示。后面将对动现的具体设计做详细的讲解。

10.Profiler

“Profiler”命令的功能为对Unity集成开发环境中各个功能选项的使用情况以及CPU的利用率进行检查。单击命令Profiler或按快捷键Ctrl+7,即可进入探查窗口,如图2-117所示。

11.Audio Mixer

“Audio Mixer”命令的功能为打开音频混合器编辑界面。单击Audio Mixer命令,或者双击需要编辑的音频混合器资源,就会显示出音频混合器编辑界面,如图2-118所示。在该界面中可以对音频混合器资源进行编辑,以达到项目需要的效果。

12.Asset Store

“Asset Store”命令的功能为打开资源商店。单击命令Asset Store或是按快捷键Ctrl+9,即可进入资源商店,如图2-119所示,在里面可以搜索购买资源。

13.Version Centrol

“Version Centrol”命令的功能为“版本控制”。单击命令Version Centrol,就会立刻弹出版本控制面板,如图2-120所示。单击面板中的 Settings 按钮,Inspector 视窗中就会显示版本控制的模式,可供开发人员选择。

14.Animator Parameter

“Animator Parameter”命令的功能为打开动画控制器参数设置面板。单击Animator Parameter命令,就会打开动画控制器参数设置面板,如图2-121所示。在该面板可以设置用于控制动画播放的参数,这些参数可以在动画播放控制面板中使用。

15.Animator

“Animator”命令的功能为打开动画控制编辑器。单击命令Animator,即可打开动画控制编辑器界面,如图2-122所示。

16.Sprite Packer

“Sprite Packer”命令的功能为打开精灵打包器面板。单击命令Sprite Packer,就会立刻打开精灵打包器面板,如图2-123所示。可以在该面板下将具有同一标识的精灵打包成同一图集。

17.Lighting

“Lighting”命令的功能为打开光照设置面板。单击Lighting,即可打开光照设置面板,如图2-124所示。在该面板中可以对与光照有关的进行设置。

18.Occlusion Culling

“Occlusion Culling”命令的功能为打开遮挡剔除面板。单击命令Occlusion Culling,即可打开遮挡剔除面板,如图2-125所示。在该面板可以进行场景的遮挡剔除。

19.Frame Debugger

“Frame Debugger”命令的功能为打开帧调试器面板。单击命令Frame Debugger,即可打开帧调试器面板,如图2-126所示。在该面板可以详细查看场景绘制的每一步骤。

20.Navigation

“Profiler”命令的功能为打开导航网格设置面板。导航网格设置面板如图2-127所示。单击命令Navigation,就会立刻打开导航网格设置面板,并在Scene视图中显示烘焙过的区域。

21.Console

“Console”命令的功能为打开控制台面板。单击命令Console或是按快捷键Ctrl+Shift+C,即可进入控制台面板,如图2-128所示。控制台里面将会显示游戏遇到的任何错误、消息或者警告,以及和这个特定错误相关的任何细节,便于读者发现这些问题并解决。

2.2.7 帮助(Help)

本节将对菜单栏中的帮助(Help)菜单进行详细讲解,并对其下的每一个子菜单都进行细致的介绍,使读者能够清楚地理解Help菜单的功能和作用。在Unity集成环境中,单击Help菜单,会弹出一个下拉菜单,其中包含的各命令及其对应的快捷键如图2-129所示。

1.About Unity

“About Unity”命令的功能为对此Unity集成开发环境的说明。单击命令About Unity,就会弹出About Unity界面,如图2-130所示。

2.Manage License

“Manage License”命令的功能为对此 Unity 集成开发环境进行激活操作。单击命令 Manage License,会立刻弹出一个窗口,如图2-131所示。可在此选择需要的服务。

提示

在第1章讲解集成开发环境搭建时对激活进行了详细的介绍,如果你的Unity还没有激活,现在可以进行此操作。详细步骤见第1章。

3.Unity Manual

“Unity Manual”命令的功能为打开Unity手册。单击命令Unity Manual,就会自动打开默认网页浏览器并在浏览器中打开Unity手册,如图2-132所示。初学者可以阅读此手册,通过对此手册的阅读,将对Unity有更为全面的了解。

4.Scripting Reference

“Scripting Reference”命令的功能为打开脚本手册。单击命令Scripting Reference,就会在网页浏览器中打开脚本手册网页,如图2-133所示。这里相当于Unity脚本的字典,只要需要即可查找,无论对于初学者还是有经验的开发者,都需要参考本脚本手册。

5.Unity Connect

“Unity Connect”命令的功能为打开Unity云服务页面,单击Unity Connect命令,就会打开Unity云服务页面,如图2-134所示。在该页面可以查看Unity云服务的详细介绍以及使用Unity云服务。

6.Unity Forum

“Unity Forum”命令的功能为打开Unity官方论坛。单击Unity Forum命令,就会打开Unity官网论坛网页,如图2-135所示。

7.Unity Answers

“Unity Answers”命令的功能为打开Unity问答页面。单击Unity Answers命令,就会打开Unity问答网页,如图2-136所示。在该页面可以提交Unity的问题或是查阅其他人的问答内容。

8.Unity Feedback

“Unity Feedback”命令的功能为打开Unity反馈页面。单击Unity Feedback命令,就会打开Unity反馈网页,如图2-137所示。有什么好的建议和想法可以通过这个页面进行登记和提交。

9.Check for Updates

“Check for Updates”命令的功能为检查更新。当单击Check for Updates命令,就会打开Unity Editor Update Check界面,如图2-138所示。在此界面可以检查是否有新的版本,并进行升级更新。

10.Download Beta

“Download Beta”命令的功能为下载Beta版Unity。单击Download Beta命令,就会打开下载Beta测试版Unity集成开发环境的网页,如图2-139所示。

11.Release Notes

“Release Notes”命令的功能为打开发行说明页面。单击Release Notes命令,就会打开Unity官网上的发行说明网页,如图2-140所示。该网页中介绍了 Unity最新版本的发行说明,包括升级内容和修复的问题。

12.Report a Bug

“Report a Bug”命令的功能为报告错误。单击Report a Bug命令,就会弹出Unity Bug Reporter界面,如图2-141所示。在该界面中可以报告使用Unity集成开发环境中出现的错误。

2.3 本章小结

Unity 是一款功能强大的集成开发编辑器和引擎,为开发者提供了创新和发布一款游戏所必需的工具,无论开发者是要开发一款3D第一人称射击游戏还是休闲的2D智力游戏。Unity所有的功能都有不同的、带有标签的窗口视图,每个视图都提供了不同的编辑和操作功能,以帮助开发者完成手边的任务。

Unity的许可方式及可选的插件使得读者在需要时可以得到适量的和定制的功能。这款编辑器完全是以资源为中心的,它会为所有不同类型的对象创建物理链接和引用,即便是像代码这些的对象。它所具备的灵活性使得它既可供一个独立的开发者使用,又可供一个大型的开发团队使用。

相关图书

Unity游戏开发入门经典(第4版)
Unity游戏开发入门经典(第4版)
Unity  3D游戏开发技术详解与典型案例
Unity 3D游戏开发技术详解与典型案例
从零开始:快速入门Unity 3D游戏开发
从零开始:快速入门Unity 3D游戏开发
Unity 3D脚本编程与游戏开发
Unity 3D脚本编程与游戏开发
AR开发权威指南:基于AR Foundation
AR开发权威指南:基于AR Foundation
VR与AR开发高级教程:基于Unity(第2版)
VR与AR开发高级教程:基于Unity(第2版)

相关文章

相关课程