Unity游戏开发入门经典(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-08 14:14:53

点击下载

作者:[美]迈克·吉格(Mike Geig)

出版社:信息技术第一出版分社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Unity游戏开发入门经典

Unity游戏开发入门经典试读:

前言

Unity 游戏引擎极其强大,因此受到专业人员和业余的游戏开发人员青睐。编写本书的目的是为了使读者能够尽快地熟悉 Unity 并使用它来工作。同时本书还介绍了游戏开发的一些基本原理。与其他只介绍特定主题或者利用全部篇幅讲解单独一款游戏的图书不同,本书在介绍大量主题的同时仍然设法包含了4款游戏。在你读完本书后,所掌握的不仅仅是Unity游戏引擎方面的理论知识,还将拥有与之配套的游戏开发技能。

本书读者对象

本书适合于任何希望学习如何使用 Unity 游戏引擎的人。无论你是一名学生还是开发人员,都能从本书中学到自己想要的知识。本书不要求读者具备任何游戏开发知识或经验,因此,如果你是第一次涉足创建游戏的艺术这个领域,也不要担心。花一些时间好好享受一下,你将立即开始投入到学习中去。

本书组织结构与主要内容

本书分为24章,每一章应该花大约1小时的时间完成。本书各章分别介绍以下内容。

第1章,“Unity 简介”:本章将让你开始运行Unity 游戏引擎的多种组件。

第2章,“游戏对象”:本章将教会你如何使用 Unity 游戏引擎的基本构件,即游戏对象。你还将学习坐标系统和变换。

第3章,“模型、材质和纹理”:在本章中,你将学习在对材质应用着色器和纹理时,使用Unity的图形资源管线,还将学习如何对各种3D对象应用这些材质。

第4章,“地形”:在本章中,你将学习使用 Unity 的地形系统雕刻游戏世界。在你四处搜寻并创建独特、绝妙的风景时,不要害怕弄脏你的手。

第5章,“环境”:在本章中,你将学习对你雕刻的地形应用环境效果,是时候栽一些树了!

第6章,“灯光和摄像机”:本章将非常详细地介绍灯光和摄像机。

第7章,“第1款游戏:Amazing Racer”:是时候开发你的第一款游戏了。在本章中,你将创建 Amazing Racer(惊人的赛车)游戏,它要求你运用迄今为止学到的所有知识。

第8章,“编写第1部分的脚本”:在本章中,你将开始尝试利用 Unity 编写脚本。如果你以前从未编写过程序,也不要担心。我们将尽量放慢进度,以便你学习基础知识。

第9章,“编写第2部分的脚本”:在本章中,将扩展你在第8章中所学的知识。这一次,你将重点关注更高级的主题。

第10章,“碰撞”:本章将逐一介绍现代视频游戏中常见的多种碰撞交互。你将学习物理碰撞以及触发碰撞,还将学习创建物理材质,以便给对象添加一些变化。

第11章,“第2款游戏:Chaos Ball”:是时候开发另一款游戏了!在本章中,你将创建 Chaos Ball(混乱球)游戏。本章的章名可以说是名副其实,因为你将实现多种碰撞、物理材质和目标,也许还会把策略与突然移动的反应结合起来。

第12章,“预设”:预设(prefab)是创建可重用的游戏对象的一种优秀方式。在本章中,你将学习创建和修改预设,还将学习在脚本中构建它们。

第13章,“图形用户界面”:在本章中,你将学习如何在 Unity 中实现图形用户界面(graphical user interface,GUI),还将学习多种组件,以及如何在 2D 界面上定位它们。

第14章,“角色控制器”:在本章中,你将学习如何创建自己的角色控制器,并通过构建你自己的自定义控制器来结束本章。

第15章,“第3款游戏:Captain Blaster”:这将是你创建的第3 款游戏!在本章中,你将创建Captain Blaster(爆破队长)游戏,它是一款制动火箭式的宇宙飞船射击游戏。

第16章,“粒子系统”:是时候学习粒子效果了。在本章中,你将尝试Unity传统的粒子系统及其全新的Shuriken粒子系统,还将学习如何创建冷却效果,并把它们应用于你的项目。

第17章,“动画”:在本章中,你将开始学习动画以及Unity遗留的动画系统,还将试验使用Asset Store 中的资源使模型栩栩如生。

第18章,“动画器”:本章全都用于介绍 Unity 新引入的 Mecanim 动画系统,你将学习重新映射模型绑定,并对它们应用通用的动画。

第19章,“第4款游戏:Gauntlet Runner”:第4款游戏被命名为Gauntlet Runner,这款游戏探索了一种滚动背景的新方式,以及如何实现动画控制器来构建复杂的混合式动画。

第20章,“音频”:本章让你通过音频添加一些重要的环境效果,你将学习2D和3D音频以及它们不同的属性。

第21章,“移动开发”:在本章中,你将学习为移动设备构建游戏,还将学习利用移动设备的内置加速计和多点触摸显示屏(multi-touch display)。

第22章,“游戏修改”:现在应该回过头来并再次检查你创建的游戏。这一次将修改它们,使之能够在移动设备上工作。你将开始看到哪些控制模式可以很好地转换为移动模式,哪些则不能。

第23章,“润色和部署”:现在应该学习如何添加多个场景,以及在场景之间保留数据。你还将学习部署设置以及玩游戏。

第24章,“结束语”:在本章中,你将回顾并总结学习Unity所走过的旅程。本章提供了关于你做了什么以及接下来将去往哪里的有用信息。

Unity引擎版本

本书使用的Unity引擎版本为4.1和4.2。对你来说,使用这两个版本的效果几乎完全相同,但是要注意一些视觉元素可能改变了位置。例如,在一些屏幕图像中,你可能注意到Terrain菜单项出现在 Unity 编辑器顶部的菜单栏中。但在版本 4.2 中,它移动了位置。涉及地形创建和管理的所有解释都进行了更新,以说明新的进程。之所以在这里指出这一点,是希望在两个版本看上去稍有不同时,你不会感到困惑。

感谢你阅读我为本书写的前言!我希望你享受本书,并从中学到大量的知识。祝你在学习Unity游戏引擎的旅程中好运连连!第1章Unity简介

在本章中你将学到:

怎样安装Unity;

怎样创建新项目或者打开现有的项目;

怎样使用Unity编辑器;

怎样在Unity Scene 视图内导航。

本章的意义在于让你准备好在 Unity 环境中大显身手。我们首先将探讨不同的 Unity 许可证,选择其中一种,然后安装它。一旦安装完成,你将学习如何创建新项目以及打开现有的项目。你将打开强大的 Unity 编辑器,并研究它的多种组件。最后,你将学习使用鼠标控制和键盘命令导航场景。本章打算让你亲自动手实践,因此在阅读时要下载 Unity,并遵循相应的学习指导。1.1安装Unity

要开始使用 Unity,首先需要下载并安装它。如今,软件安装是一个十分简单、直观的过程,Unity也不例外。不过,在我们可以安装任何部分之前,需要探讨两个可用的Unity许可证:Unity Free 和Unity Pro。Unity Free 足以完成本书中的所有示例和项目。事实上,Unity Free包含制作商业游戏所需的一切功能。如果你想要使用更强大的功能(并且愿意花费金钱), Unity Pro 提供了一套扩展的工具,可以给你提供真正“高价的”游戏引擎体验。如果对Unity Pro 感到好奇,但是不想购买它,Unity Free 提供了为期30 天的Unity Pro 免费试用许可证。你可以随意使用Unity Pro 的特性,并且确定它是否适合你。在访问Unity网站时,你可能还会注意到还有Android和iOS插件许可证。从Unity的最新版起,基本的移动插件就是免费的,并且Unity附带有它们。

1.1.1 下载并安装Unity

出于本章的目的,我们将假定你遵循的是Unity Free 许可证。如果你使用的是Unity Pro版本,过程将非常相似,唯一的变化是在选择许可证时。当你准备好开始下载并安装 Unity时,可以遵循下面这些步骤。(1)从http://unity3d.com/unity/download/上的Unity3D下载页面下载Unity安装程序。(2)运行安装程序并遵循提示进行安装,就像安装任何其他的软件一样。(3)在提示时,确保保持选中Example Project、Unity DevelopmentWeb Player和MonoDevelop这些复选框,如图1.1所示。图1.1 提示选择要安装的组件(4)为 Unity 选择一个安装位置,如图 1.2 所示。建议保留默认的设置,除非你确认自己这么做不会出问题。图1.2 提示选择安装位置(5)至此,安装就将要完成了。(6)在第一次运行 Unity 时,将要求你激活许可证,如图 1.3 所示。此时,可以选择你是想使用Unity Free,还是开始为期30 天的Unity Pro 免费试用。如果你购买了Unity Pro,可以输入序列号以解锁它。我们目前假定你选择的是Unity Free。图1.3 Unity 许可证选择屏幕(7)提示登录到一个Unity账户,如图1.4所示。如果具有一个Unity账户,可以在此输入它。如果没有,可以选择Create Account 选项,并填写必需的表单。图1.4 提示登录到一个Unity账户(8)这就行了!Unity安装现在就完成了。

注意:

支持的操作系统和硬件

要使用 Unity,必须使用 Windows PC 或 Macintosh 计算机。尽管可以构建在 Linux 系统上运行的项目,但是 Unity 编辑器本身却做不到这一点。你的计算机还必须满足以下最低要求(取自编写本书时的 Unity网站上的内容)。

Windows:XP SP2 或更高版本。Mac OS X:Intel CPU 及 Snow Leopard 10.6 或更高版本。注意:Unity 没有在 Windows 和 OS X的服务器版本上测试过。

具有 DirectX 9(Shader Model 2.0)能力的显卡,从 2004 年起生产的任何显卡都适用。

使用遮挡剔除(occlusion culling)需要具有遮挡查询支持的 GPU (一些 Intel GPU 不支持它)。

注意:这些只是最低要求。

警告:

Internet链接

所有的 Internet 链接在编写本书时都是最新的。不过,Web 位置有时会改变。如果我给你的链接不再提供你正在寻找的材料,那么使用Internet搜索应该会发现你所寻找的内容。1.2开始认识Unity编辑器

既然你已经安装了Unity,就可以开始探索Unity编辑器了。Unity编辑器是一种可视化组件,允许以一种“所见即所得”的方式构建游戏。由于大多数交互实际上都发生在我们与编辑器之间,因此通常就把它简称为Unity。本章的下一部分将研究Unity编辑器的各种元素,以及它们如何密切配合来制作游戏。1.2.1 Project对话框

第一次打开Unity时,看到的第一个窗口是Project对话框,如图1.5所示。我们将使用这个窗口打开最近的项目、浏览已经创建的项目或者开始新的项目。图1.5 Project对话框

如果已经在Unity中创建了一个项目,那么无论何时打开Unity,它都将直接进入该项目。要返回到Project 对话框,可以使用(从Unity里面)File > New Project 命令到达Create New Project 对话框,或者使用File > Open Project 命令到达Open Project 对话框。

提示:

打开Project对话框

在运行 Unity时,将会自动打开你处理的最后一个项目。如果你想打开Project 对话框而不是最后一个项目,可以按住 Alt 键(在 Mac 上则是Control键),并单击Unity图标。如果想要Unity总是保持这种工作方式,可以使用 Edit > Preferences 命令,并选中 Always Show Project Wizard复选框。

创建我们的第一个项目

现在让我们继续前进,并创建一个项目。你想知道在哪里保存项目,以便以后需要时可以轻松地找到它。如图1.6所示,显示了在创建项目之前的对话框的样子。(1)打开Create New Project 对话框。(2)选择一个保存项目的位置。如果你不知道该把项目存放在哪里,可以保留默认的选项。如果决定选择一个自定义的位置,可以选择一个空文件夹用于存放项目。这个空文件夹将命名为项目的名称。(3)把项目命名为 Chapter1_Trial。项目名称是 Project Location 文本框中的最后一点文本。(4)保持Import the Following Packages下的所有程序包都未选中,我们将在后面讨论程序包。(5)单击Create按钮。图1.6 用于第一个项目的设置

警告:

项目和程序包

起初,你可能忍不住在Create New Project对话框中选择一串程序包。不过,我想警告你的是,不要轻易地在项目中添加程序包,因为不需要的项目可能会增加文件的大小并延缓进度。未使用的程序包只会占据空间,而不会提供任何益处。记住了这一点,就知道更好的做法是:等到确实需要某个程序包时才导入它。即便如此,也只需要导入那个程序包中你打算使用的部分。1.2.2 Unity界面

迄今为止,我们安装了Unity,并且查看了Project对话框。现在应该深入一步,开始尝试执行一些操作。在第一次打开一个新的 Unity 项目时,将会看到一堆灰色窗口,称为视图(view),并且所有的内容都在一定程度上是灰色的,如图1.7所示。无需恐惧,我们将迅速使这个位置变得鲜活起来。在下面几节中,我们将逐一探讨每个独特的视图。不过,现在我想作为一个整体讨论Unity界面的布局。图1.7 Unity界面

对于初学者,Unity 允许用户定制他们的工作方式。这意味着任何视图都可以移动、停靠、复制或改变。例如,如果单击单词“Hierarchy”(位于左边)以选取Hierarchy视图,并把它拖到 Inspector 上(位于右边),就可以把这两个视图叠加在一起。也可以把光标放在视图之间的任何线条上,并调整窗口大小。事实上,为什么不花点时间尝试移动一些内容,以使它们像你所喜欢的那样排列呢?如果最终得到的布局不是你喜欢的样子,也不要感到恐惧。可以使用Window > Layouts > Default Layout命令,快速、轻松地切换回内置的默认视图。虽然我们讨论的是内置布局的主题,但是可以更进一步,并试验几种其他的布局(我是Wide布局的“粉丝”)。如果你创建了一种自己喜欢的布局,总是可以使用Window > Layouts > Save Layout命令把它保存起来。并且,即使你不小心改变了布局,也可以恢复它。

注意:

找到合适的布局

没有哪两个人是相同的,同样,没有哪两个人喜欢的布局是相同的。良好的布局有助于处理项目,并使工作容易得多。一定要花时间摆弄布局,找到一种最适合你的布局。你将利用 Unity做许多工作,以一种舒适的方式建立环境是有好处的。

如果你想要复制一种视图,它也是一个相当直观的过程。可以简单地右键单击任何视图标签(标签[tab]是显示视图名称的部分),把鼠标光标悬停在Add Tab 上,将会弹出一个视图列表,可供你从中选择,如图 1.8 所示。你可能想知道自己为什么想要复制视图。在疯狂地移动视图时,有可能意外地关闭视图。重新添加标签将会恢复它。此外,考虑创建多个Scene视图的能力。每个Scene视图都可以与项目内的特定元素或轴对齐。如果希望看到它的实际应用,可以使用Window > Layouts > 4 Split 命令,检查4种Split 内置布局(如果创建了一种你喜欢的布局,就一定要先保存它)。图1.8 添加新标签

现在,没有更多的骚扰了,让我们查看特定的视图本身。1.2.3 Project视图

为一个项目创建的所有内容(文件、脚本、纹理、模型等)都可以在Project视图中找到,如图 1.9 所示。在这个窗口中,显示了整个项目的所有资源和组织结构。在创建一个新项目时,将会注意到单个名为Assets的文件夹项。如果进入硬盘驱动器上保存项目的文件夹,也会发现Assets文件夹。这是由于Unity利用硬盘驱动器上的文件夹镜像了Project视图。如果在 Unity 中创建一个文件或文件夹,在资源管理器中将会出现对应的文件或文件夹(反之亦然)。可以通过简单的拖放操作,在Project视图中移动项目。这使你能够在文件夹内放置项目,或者自由地重新组织项目。图1.9 Project视图

注意:

资源

资源是在资源文件夹中作为文件存在的任何项目,所有的纹理、网格、声音文件、脚本等都可以被视为资源。相反,如果创建一个游戏对象,但它没有创建对应的文件,那它就不是资源。

警告:

移动资源

Unity将维护与项目关联的多种资源之间的链接。因此,在Unity外面移动或删除项目可能会导致潜在的问题。一般来讲,在 Unity里面执行所有的资源管理是一个好主意。

无论何时,在Project视图中单击一个文件夹,都会在右边的Assets区域下面显示该文件夹的内容。如图 1.9 所示,Assets 文件夹目前是空的,因此在右边不会显示任何内容。如果想要创建资源,可以通过单击Create下拉菜单,轻松做到这一点。这个菜单使你能够把各种资源和文件夹添加到项目中。

提示:

项目组织

项目组织对项目管理极其重要。随着项目变大,资源的数量也将开始增多,直至查找任何内容都可能变成一件繁重的工作。利用一些简单的组织规则,就可以避免许多问题的产生。

每种资源类型(场景、脚本、纹理等)都应该具有它自己的文件夹。

每种资源都应该位于一个文件夹中。

如果将要在一个文件夹内使用另一个文件夹,就要确保结构是有意义的。文件夹应该变得更具体,而不是含混不清。

遵循这几个简单的规则,便可以带来不同的结果。

在 Unity 4 中,添加到 Project 视图中的我最喜爱的特性之一是:添加了 Unity Asset Store 的收藏夹和集成。Favorites 按钮使你能够快速选择某种类型的所有资源,这使得你有可能快速获得资源的“一目了然”的视图。当单击 Favorites 按钮之一(例如,All Models)或者利用内置的搜索栏执行搜索时,将会看到在 Assets 与 Asset Store 之间可以缩小结果的范围。如果单击 Asset Store,将能够从 Unity Asset Store 中浏览适合搜索条件的资源,如图1.10所示。可以按免费资源和付费资源进一步缩小结果的范围。对我而言,这相当于添加了一个极佳的功能,因为它使你无需离开 Unity界面,就能够抓取项目所需的资源。图1.10 搜索Unity Asset Store1.2.4 Hierarchy视图

如图1.11所示,Hierarchy视图在许多方面都比较像Project视图。它们之间的区别是:Hierarchy视图显示了当前场景而不是整个项目(project)中的所有分项(item)。在第一次利用Unity 创建项目时,将会获得默认的场景,除了单个分项即Main Camera 之外,其他都是空的。在向场景中添加分项时,它们将出现在Hierarchy视图中。就像Project视图一样,可以使用Create菜单向场景中快速添加分项,使用内置的搜索栏执行搜索,以及单击并拖动项目来组织和“嵌套”它们。图1.11 Hierarchy视图

提示:

嵌套

嵌套(nesting)是用于在两个或更多的分项之间建立关系的术语。在Hierarchy视图中,单击一个分项并把它拖到另一个分项上,将把这个分项嵌套在另一个分项之下,这通常被称为父/子关系。在这种情况下,顶部的对象是父对象,其下的任何对象都是子对象。你将知道一个对象是嵌套于另一个对象之下的,因为它以缩进形式显示。后面将会看到,在Hierarchy视图中嵌套对象可能会影响它们的行为方式。

提示:

场景

Unity使用场景(Scene)这个术语来描述你可能已经知道的作为一个关卡的内容。在开发 Unity项目时,对象和行为的每个集合都应该是它自己的场景。因此,如果正在利用雪关卡和丛林关卡构建游戏,它们将是单独的场景。

提示:

场景组织

在处理新的Unity项目时,应该做的第一件事是在Project视图中的Assets下面创建一个Scenes文件夹。这样,将把所有的场景(或关卡)存储在相同的位置。一定要给场景提供一个描述性的名称。Scene1现在听起来像是一个非常好的名称,但是当具有 30 个场景时,它可能会令人混淆。1.2.5 Inspector视图

Inspector视图使你能够查看当前所选项目的所有属性。从Project或Hierarchy视图中简单地单击任何资源或对象,Inspector视图将自动传播相关的信息。

如图1.12所示,可以查看在Hierarchy视图中选择了Main Camera对象之后的Inspector视图。

让我们分解它的一些功能。

如果单击对象名称旁边的复选框,就会禁用它,并且它将不会出现在项目中。

下拉列表(比如 Layer 或 Tag 列表,后面将介绍关于它们的更多知识)用于从一组预先定义的选项中做出选择。

文本框、下拉菜单和滑块可以更改它们的值,并且所做的更改将自动、立即反映在场景中——即使游戏正在运行亦会如此!

每个游戏对象都充当不同组件(比如图1.12所示的Transform、Camera和GUILayer)。可以通过取消选中这些组件或者右键单击并选择Remove Component命令移除它们,来禁用这些组件。

可以单击Add Component按钮添加组件。图1.12 Inspector视图

警告:

在运行场景时更改属性

更改对象的属性并且查看那些立即反映在运行场景中的更改能力非常强大。它使你能够完全动态地调整诸如运动速度、跳跃高度、碰撞力度之类的属性,而无需停止和启动游戏。不过,要小心谨慎。在场景运行时对对象属性所做的任何更改都将在场景结束时更改回来。如果执行了更改并且喜欢所得到的结果,就一定要记住它是什么,以便在场景停止时可以再次设置它。1.2.6 Scene视图

Scene视图是你将使用的最重要的视图,因为它使你能够在构建游戏时可视化地查看它,如图1.13所示。使用鼠标控制和几个热键,可以在场景内四处移动,并且在需要的地方放置对象。这给你提供了一种极佳的控制级别。

稍后,我们将讨论在场景内四处移动,但是,首先让我们重点关注作为Scene视图一部分的控件。

绘图模式:这用于控制如何描绘场景。默认把它设置为 Textured,这意味着将利用它们的纹理绘制对象。

渲染模式:这用于控制如何绘制场景中的对象。默认情况下,渲染模式是RGB,这意味着将以它们的全彩色(full color)绘制对象。图1.13 Scene视图

场景光照:这个控件用于确定Scene视图中的对象是将通过默认的环境光照(ambient lighting)还是通过实际存在于场景内的灯光来照明。默认是使用内置的环境光照,但是一旦向场景中添加了第一个灯光,就会改变默认设置。

游戏叠加(overlay):此控件用于确定像天空盒(skybox)和图形用户界面(GUI)这样的组件如何出现在Scene视图中,它还用于控制位置网格是否可见。

试听模式(audition mode):这个控件用于设置 Scene 视图中的音频源是否正常工作。

小工具选择器(gizmo selector):这个控件让你能够选择哪些“小工具”将出现在Scene视图中。小工具是指示器,可以提供可视化的调试或者辅助进行设置。

场景小工具(scene gizmo):这个控件显示了你目前面对的是哪个方向,以及把Scene视图与轴对齐。

注意:

打开

场景小工具

场景小工具在Scene视图上提供了许多功能。可以看到,该控件具有与坐标轴对齐的X、Y和Z指示器。这使得很容易准确判断你在场景中观看的是哪个方向。在后面一章中将讨论轴和 3D 空间。小工具还允许主动控制场景的对齐方式。如果单击小工具的其中一根轴,将会注意到 Scene视图立即贴紧那根轴,并且被放置到某个方向,比如顶部或左边。单击小工具中心的方框,将在Iso模式与Persp模式之间切换。Iso代表Isometric,它是没有应用透视的3D视图。与之相反,Persp代表Perspective,是应用了透视的3D视图。自己试试它,查看它是如何影响Scene视图的。

注意:

不同的版本,不同的按钮

如果使用Unity 4.2或之前的版本,场景视图菜单看上去如图1.13所示的那样。不过,如果使用Unity 4.3 或之后的版本,它们看上去将稍有不同。不要担心,选项仍然都在那里,它们现在只是位于 Effects 下拉菜单之下。你还可能注意到一个新的2D按钮,在前面的图像中没有显示出它。这个按钮支持使用Unity新增的2D能力。不过,由于本书重点关注的是3D游戏,目前还不需要关心这些选项。1.2.7 Game视图

我们将要查看的最后一个视图是 Game 视图。实质上讲,Game 视图通过提供当前场景的完全模拟,允许在编辑器内“玩”游戏。游戏的所有元素都将在Game视图中正常工作,就像完全构建了项目一样。图1.14显示了Game视图的样子。注意:尽管从技术上讲Play、Pause和Step按钮不是Game视图的一部分,但是它们可以控制Game视图,因此把它们包括在图像中。图1.14 Game视图

提示:

丢失的Game视图

如果发现Game视图隐藏在Scene视图后面,或者Game视图选项卡完全消失了,不要担心。一单击 Play 按钮,Game 视图选项卡就会出现在编辑器中,并且开始显示游戏。

Game视图带有一些控件,可以帮助我们测试游戏。

播放:Play按钮使你能够播放当前的场景。所有的控件、动画、声音和效果都将存在并且会工作。一旦游戏运行,就好像游戏是在独立的播放器(比如在 PC 或移动设备上)中运行一样。要使游戏停止运行,可再次单击Play按钮。

暂停:Pause按钮用于暂停当前正在运行的Game 视图。游戏将维持它的状态,并且可以从暂停时它所处的位置继续运行。再次单击Pause按钮,将继续运行游戏。

步进:Step 按钮在 Game 视图暂停时可用,可以让游戏以单帧的速度运行。这实际上允许缓慢地“单步”通过游戏,并调试你可能具有的任何问题。当游戏正在运行时,按下Step按钮将导致游戏暂停。

外观下拉菜单:从这个下拉菜单中,可以选择你希望 Game 视图窗口在运行时所显示的高宽比。默认选项是Free Aspect,但是可以更改它,以匹配你为之开发游戏的目标平台的高宽比。

Maximize on Play:这个按钮用于确定Game 视图在运行时是否会占据编辑器的全部空间。它默认是关闭的,并且正在运行的游戏只会占据Game视图选项卡的大小。

Stats:这个按钮用于确定当游戏正在运行时是否在屏幕上显示渲染的统计信息。这些统计信息可用于度量场景的效率。默认将该按钮设置为关闭状态。

Gizmos:它既是一个按钮,也是一个下拉菜单。这个按钮用于确定当游戏正在运行时是否显示小工具,默认将其设置为关闭的。这个按钮上的下拉菜单(小箭头)用于确定:如果小工具是打开的,那么将显示哪个小工具。

注意:

运行、暂停和关闭

最初可能难以确定运行(running)、暂停(paused)和关闭(off)这些术语的含义。当没有在Game视图中执行游戏时,就称游戏是关闭的。当游戏处于关闭状态时,游戏控件将不会工作,并且不能播放游戏。当按下Play按钮时,游戏开始执行,就称游戏正在运行。播放、执行和运行都意味着同一件事。如果游戏正在运行,并且按下Pause按钮,游戏就会停止运行,但是仍将维持它的状态。此时,游戏就处于暂停状态。暂停的游戏与关闭的游戏之间的区别是:暂停的游戏将从暂停它的位置恢复执行,而关闭的游戏则将从起始位置开始执行。1.2.8 致敬:工具栏

工具栏尽管不是一个视图,但它是Unity编辑器的一个不必可少的部分。图1.15显示了工具栏的组件。

变换工具:这些按钮使你能够操纵游戏对象,将在后面更详细地介绍它们。要特别注意那个像人手一样的按钮,这是Hand工具,将在本章后面描述它。

变换小工具(gizmo)切换开关:这些切换开关可以操纵小工具将如何出现在Scene视图中,目前暂且不管它们。

Game 视图控件:这些按钮用于控制Game 视图。

图层下拉菜单:这个菜单用于确定哪些对象图层将出现在 Scene 视图中。默认情况下,所有的内容都将出现在Scene视图中。目前暂且不管它。在后面一章中将介绍图层。

布局下拉菜单:这个菜单允许快速更改编辑器的布局。图1.15 工具栏1.3导航Unity 的Scene 视图

Scene视图允许对游戏的构造进行诸多控制。可视化地放置和修改项目的能力非常强大。不过,如果不能在场景内四处移动,所有这些将没有非常大的用处。本节将介绍两种不同的方式,用于更改位置和导航Scene视图。1.3.1 Hand工具

Hand工具(热键:Q)提供了一种简单的机制,利用鼠标四处移动Scene视图,如图1.16所示。如果使用的是单键鼠标,那么这个工具被证明特别有用(因为其他方法都需要双键鼠标)。表1.1简要解释了Hand工具的每种控制方式。表1.1 Hand工具的控制方式图1.16 Hand工具

在下面这个网址上可以找到所有的Unity热键:

http://blogs.unity3d.com/2011/08/24/unity-hotkeys-keyboard-shortcuts-in-unity/

警告:

不同的摄像机

在Unity中工作时,将与两类摄像机打交道。第一类是标准的游戏对象摄像机,可以看到在场景中已经具有这样的摄像机(默认情况);第二类更多的是一种假想的摄像机,从传统意义上讲它不是一种摄像机,相反,它确定了我们在 Scene 视图中可以看到什么。在本章中,在提及摄像机时,所指的都是第二类摄像机。你将不会实际地操纵游戏对象摄像机。1.3.2 Flythrough模式

Flythrough 模式使你能够使用传统的第一人称控制模式在场景中四处移动。对于任何玩第一人称 3D 游戏(比如第一人称射击游戏)的人来说,这种模式都让他们有一种宾至如归的感觉。如果你没有玩过那些游戏,可能要花点时间习惯这种模式。不过,一旦你熟悉了它,它就会变成一种习性。

按住鼠标右键将进入Flythrough模式。表1.2展示的所有动作都需要按住鼠标右键。表1.2 Flythrough模式控制

提示:

缩放

无论使用哪种方法进行导航,滚动鼠标滚轮总会在场景内缩放视图。默认情况下,场景将从Scene视图的中心进行放大或缩小。不过,如果在滚动时按住Alt 键,就会放大或缩小鼠标当前指向的任何内容。继续前进并试验一下它!

提示:

贴紧控制

可以用多种方式精确控制场景导航。不过,有时,你只想在场景中四处转转。对于像这样的情况,使用所谓的贴紧控制(snap control)就很好。如果想要快速导航到或者放大场景中的某个游戏对象,可以高亮显示Hierarchy视图中的对象并按下F键。你将注意到场景“贴紧”到那个游戏对象。另一种贴紧控制是你已经见过的。场景小工具允许快速把摄像机贴紧到任何一根轴。这样,就可以从任意角度查看对象,而不必手动四处移动场景摄像机。一定要学习贴紧控制,并且利用它们快速导航场景就变成了一种贴紧操作!1.4小结

本章首先探讨了 Unity 游戏引擎,并通过下载和安装 Unity 开始这个过程。接着,你学习了如何打开和创建项目。然后,你学习了组成 Unity 编辑器的各种不同的视图,还学习了如何导航Scene视图。1.5问与答

问:资源和游戏对象是一样的吗?

答:不完全一样。基本上讲,它们之间最大的区别是:资源在硬盘驱动器上具有对应的文件或文件组,而游戏对象则不具有。资源可能会也可能不会包含游戏对象。

问:有许多不同的控件和选项,我需要立即把它们都记住吗?

答:根本不需要。大多数控件和选项都已经设置为涵盖了大多数情况的默认状态。随着你对 Unity 的认识进一步加深,可以继续学习关于可供你使用的不同控件的更多知识。本章只打算让你了解Unity编辑器中具有什么,并在一定程度上熟悉它们。1.6测验

花一些时间做完这里的问题,确保你完全掌握了本章所学的知识。1.6.1 问题

1.判断题:你必须购买Unity Pro 才能制作游戏。

2.哪种视图使我们能够可视化地操纵场景中的对象?

3.判断题:总是应该在 Unity 内四处移动资源文件,而不应该使用操作系统的文件浏览器。

4.判断题:在创建一个新项目时,应该包括每种你认为极好的资源。

5.当按住鼠标右键时,在Scene视图中进入的是哪种模式?1.6.2 答案

1.错误。

2.Scene视图。

3.正确。

4.错误。

5.Flythrough模式。1.6.3 练习

花点时间练习一下本章中所学的概念。从根本上稳固理解 Unity 编辑器很重要,因为本书的一切知识都会以某种方式利用它。为了完成这个练习,可以执行以下操作。

1.使用File > New Scene命令或者按下Ctrl+N组合键(在Mac 上是Command+N组合键),创建一种新场景。

2.在Project视图中的Assets下面创建一个Scene文件夹。

3.使用File > Save Scene命令或者按下Ctrl+S组合键(在Mac上是Command+S组合键),保存场景。一定要在你创建的 Scenes 文件夹中保存场景,并给它提供一个描述性的名称。

4.向场景中添加一个立方体。为此,可以单击顶部的GameObject菜单,把鼠标放在Create Other 上,并从弹出式菜单中选择Cube 命令。

5.在Hierarchy视图中选择新添加的立方体,并在Inspector视图中试验它的属性。

6.练习使用Flythrough模式、Hand工具和贴紧控制在Scene视图中四处导航。使用立方体作为参照点,帮助你进行导航。第2章游戏对象

在本章中你将学到:

怎样处理2D 和3D 坐标;

怎样处理游戏对象;

怎样处理变换。

游戏对象是Unity游戏项目(project)的基本组件。场景中存在的每个分项(item)都是或者都基于游戏对象。在本章中,你将学习 Unity 内的游戏对象。不过,在开始与 Unity 中的对象打交道之前,必须先学习2D和3D坐标系统。然后,将开始与内置的Unity游戏对象打交道,在本章最后,将学习多种不同的游戏对象变换。在本章中获得的信息对于本书其余各章是基础性的,一定要花时间学好它。2.1维度和坐标系统

华丽而富有魅力的视频游戏其实都是数学构造。所有的属性、运动和交互都可以归结为数字。对你来说幸运的是,许多地基都已经打好了。数学家们辛苦工作了几个世纪,发现、发明和简化了不同的过程,以便你可以利用现代的软件轻松地构建游戏。你可能认为游戏中的对象只是随意地存在于空间中,但是实际上每种游戏空间都具有维度,并且每个对象都放置在一种坐标系统(或网格)中。2.1.1 在3D中放入一个维度

如前所述,每一款游戏都会使用某种级别的维度。你最有可能熟悉的最常见的维度系统是2D和3D,它们分别是二维(two-dimensional)和三维(three-dimensional)的简写形式。2D系统是一个平面系统。在2D系统中,只处理垂直和水平元素(或者换句话说是:上、下、左、右)。像Tetris、Pong和Pac Man这样的游戏就是2D游戏的良好示例。3D 系统就像2D系统一样,但它显然多一个维度。在 3D 系统中,不仅具有水平和垂直方向(上、下、左、右),还具有深度(里和外)。图2.1在阐释2D正方形和3D正方形(另称为立方体,cube)方面做了很好的工作。注意在3D立方体中包括有深度轴,使之就像是“凸出”的一样。图2.1 2D正方形与3D立方体

注意:

学习2D和3D

Unity是一个3D引擎。因此,利用它创建的所有项目天生都使用三维系统。你可能想知道为什么我们要麻烦地完全涵盖 2D 系统。事实是:甚至在3D项目中,仍然有许多2D元素。纹理、屏幕元素和绘图技术都使用2D系统。学习2D系统是值得的,因为它们不会很快消失。2.1.2 使用坐标系统

维度系统在数学上等价于坐标系统。坐标系统使用一系列直线(称为轴,axis)和位置(称为点,point),这些轴直接对应于它们模拟的维度。例如,2D坐标系统具有x轴和y轴,它们分别代表水平和垂直方向。如果在水平方向上移动一个对象,就称之为“沿着x轴”移动。同样,3D坐标系统使用x轴、y轴和z轴,分别代表水平、垂直和深度。

注意:

常用的坐标系统

在谈到对象的位置时,一般都会列出它的坐标。称对象在x轴上是2并且在y轴上是4可能有点麻烦。幸运的是,存在一种书写坐标的简写方式。在 2D 系统中,采用(x, y)这样的形式书写坐标。在 3D 系统中,则把它们写成(x, y, z)的形式。因此,将代之以把这个示例写作(2, 4)。如果那个对象还在z轴上是10,则将把它写作(2, 4, 10)。

每种坐标系统都具有所有的轴相交的点。这个点称为原点(origin),原点的坐标在 2D系统中总是(0, 0),在3D系统中则是(0, 0, 0)。这个原点非常重要,因为它是得到其他所有点的基础。其他任何点的坐标都只是那个点沿着每根轴相距原点的距离。当移动某个点使之远离原点时,那个点的坐标将变大。例如,右移一个点时,它的x轴的值将变大;左移它时,x轴的值将变小,直到它经过原点为止。此时,点的x值将再次开始变大,但它也会变成负数。如图2.2 所示,这个2D坐标系统定义了3 个点。点(2, 2)在x方向上和y方向上都距离原点2个单位(unit)。点(−3, 3)位于原点的左边及其上方都是3 个单位。点(2, −2)位于原点的右边及其下方都是2个单位。图2.2 点与原点的关系2.1.3 世界坐标与局部坐标

你现在学习了游戏世界的维度以及组成它们的坐标系统。迄今为止使用的坐标系统被认为是世界(world)坐标系统。在任何给定的时间,在世界坐标系统中都只有一根x轴、y轴和z轴。同样,所有的对象都共享唯一一个原点。你可能不知道的是,还有一种所谓的局部(local)坐标系统。这个系统对于每个对象都是独特的,并且它与其他对象完全分隔开。这个局部系统具有它自己的轴和原点,其他对象不会使用它们。图 2.3 通过为每种坐标系统显示构成一个正方形的4个点,阐释了世界坐标系统与局部坐标系统之间的区别。图2.3 世界坐标系统与局部坐标系统

你可能想问:如果世界坐标系统用于对象的位置,那么局部坐标系统是用于什么的呢?在本章后面,将探讨变换游戏对象以及设置游戏对象的父对象。它们都需要使用局部坐标系统。2.2游戏对象

Unity 游戏中的每种形状、模型、灯光、摄像机和粒子系统等都具有一个共同点:它们都是游戏对象。游戏对象是任何场景的基本单元。虽然它们比较简单,但是它们非常强大。归根究底,游戏对象差不多就是一种变换(将在本章后面更详细地讨论)和一个容器。这个容器用于保存多种使对象更动态、更有意义的组件。至于向游戏对象中添加什么,这取决于你自己。有许多组件,它们添加了大量的多样性。在整本书中,你将学习使用其中许多组件。

注意:

内置的对象

你使用的每个游戏对象在开始时并非都是一个空对象。Unity 具有多个内置的游戏对象可以开包即用。单击 Unity 编辑器顶部的 GameObject菜单项,并把光标悬停在Create Other 上,就可以看到有大量的项目可用。学习使用Unity的很大一部分就是学习处理内置的和自定义的游戏对象。

创建一些游戏对象

现在让我们花一些时间处理游戏对象。你将创建几个基本的对象,并且检查它们的不同组件。(1)创建一个新项目,或者在已经具有的项目中创建一个新场景。(2)单击GameObject 菜单项并选择Create Empty 命令,添加一个空游戏对象(注意:也可以通过按下Ctrl+Shift+N组合键(PC用户)或者Command+Shift+N组合键(Mac用户),来创建空游戏对象)。(3)查看Inspector视图,将会注意到你刚才创建的游戏对象除了一种变换之外,将没有其他组件。所有的游戏对象都具有一种变换。在 Inspector 视图中单击 Add Component按钮,将会显示可以添加到对象中的所有组件。此时不要选择任何组件。(4)单击 GameObject 菜单项,把光标悬停在 Create Other 上,并从列表中选择 Cube命令,在项目中添加一个立方体。(5)注意立方体具有空游戏对象所不具有的多种组年。网格(mesh)组件使立方体可见,碰撞器(collider)则使之能够与其他对象交互。(6)最后,在Hierarchy 视图中单击Create 下拉菜单,并从列表中选择Point Light 命令,在项目中添加一个点光源(point light)。(7)可以看到点光源没有与立方体共享任何组件,而是把注意力完全放在发光上。你还可能注意到:当把灯光添加到场景中时,其他对象将变暗。这是正常的,因为场景中存在灯光,所以Unity会关闭它的环境光照。2.3变换

至此,你学习并且探索了不同的坐标系统,并且试验了一些游戏对象。现在应该把它们二者融合起来。在处理3D对象时,经常会听到变换(transform)这个术语。依赖于上下文,变换要么是一个名词,要么是一个动词。3D空间里的所有对象都具有位置、旋转和比例。如果把它们都结合起来,就会得到对象的变换(名词)。此外,如果变换指的是更改对象的位置、旋转或比例,那它就可以是一个动词。Unity把它的两种含义与变换组件(transform component)结合起来,回忆可知变换组件是每个游戏对象都必须具有的唯一组件。每个空游戏对象都具有变换。使用这个组件,可以查看对象的当前变换以及改变(或变换)对象的变换。这现在听起来可能令人糊涂,但它相当简单,要不了多久你就会了解它。由于变换由位置、旋转和比例组成,改变变换就分别对应于平移、旋转和缩放。这些变换可以使用Inspector或变换工具实现。图2.4和图2.5显示了哪些Inspector组件和工具与哪些变换相关联。图2.4 Inspector 中的变换选项图2.5 变换工具2.3.1 平移

在 3D 系统中改变对象的坐标位置称为平移(translation),这是可以应用于对象的最简单的变换。在平移一个对象时,将沿着轴移动它。图2.6演示了一个沿着x轴平移的正方形。图2.6 平移示例

当选择Translate工具(热键:W)时,将注意到所选的任何对象在Scene视图中将稍微有所改变。更确切地讲,将会看到3个箭头出现,它们沿着3根轴从对象的中心指向外面。这些是平移小工具,它们有助于在屏幕上四处移动对象。单击并按住其中任何一个轴箭头将导致它们变成黄色。然后,如果移动鼠标,对象将沿着那根轴移动。图 2.7 显示了平移小工具的样子。注意,这个些工具只会出现在Scene视图中,如果位于Game视图中,将不会看到它们。图2.7 平移小工具

提示:

变换组件和变换工具

Unity 提供了两种方式来管理对象的变换。知道何时使用每种方式很重要。你将注意到:当利用变换工具在Scene视图中改变对象的变换时,变换数据也会在Inspector视图中改变。使用Inspector视图通常更容易对对象的变换执行较大的改变,因为可以只更改它们所需要的值。不过,变换工具对于快速、较小的改变更有用。学习结合使用这两种方式将可以极大地改进工作流程。2.3.2 旋转

旋转一个对象不会在空间中移动它。相反,它会改变对象与那个空间的关系。更简单地讲,旋转使你能够重新定义x轴、y轴和z轴对于特定的对象指向的是哪个方向。图2.8显示了一个围绕z轴旋转的正方形。图2.8 围绕z轴旋转

提示:

确定旋转的轴

如果不确定需要围绕哪根轴旋转对象以获得想要的效果,就可以使用一种简单的方法。一次围绕一根轴旋转,假装对象就像是通过与那根轴平行的针固定在某个位置一样。对象只能围绕固定它的针旋转。现在,确定哪个针允许对象以你想要的方式旋转,它就是旋转对象所需要的轴。

就像Translate工具一样,选择Rotate工具(热键:E)将导致旋转小工具出现在对象周围。这些小工具是圆形,代表对象围绕轴的旋转路径。单击并拖动其中任何圆形都将把它们变成黄色,并围绕那根轴旋转对象。图2.9显示了旋转小工具的样子。图2.9 旋转小工具2.3.3 缩放

缩放将导致对象在3D空间内扩展或收缩。这种变换在使用时确实比较直观和简单。在任何轴上缩放一个对象都将导致它的大小在那根轴上改变。如图2.10所示,在x轴和y轴上缩小一个正方形。图2.11显示了当选择Scaling工具(热键:R)时缩放小工具的样子。图2.10 在x轴和y轴上缩放图2.11 缩放小工具2.3.4 变换的风险

如前所述,变换使用局部坐标系统。因此,所做的改变可能潜在地影响将来的变换,如图2.12所示。注意当以相反的顺序应用两种相同的变换时,它们将具有非常不同的效果。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载