Unity游戏开发(原书第3版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-14 17:28:33

点击下载

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

出版社:机械工业出版社

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

Unity游戏开发(原书第3版)

Unity游戏开发(原书第3版)试读:

前言

Unity是一款非常强大的工具,它在专业游戏开发者和业余游戏开发者中都非常受欢迎。本书可以引导读者快速入门,尽早使用Unity开始工作(确切地说是24小时左右),同时还涵盖了游戏开发中的基本原则。本书不像某些书籍那样仅介绍特定的几方面内容,或者整本书都在介绍如何制作一款游戏,而是讲解了Unity开发中的各种知识,并包含四个游戏案例。当你读完本书时,不仅能拥有Unity游戏开发引擎所需的理论知识,同时还将完成四款游戏的开发工作,从而获得一个游戏作品集。本书读者对象

本书适合任何想要学习使用Unity游戏引擎的人阅读。无论你是一名在校学生还是一位有丰富经验的开发者,都可以通过阅读本书学到想要的知识。阅读本书并不需要有游戏开发经验或者基础知识,所以如果这是你第一次涉足游戏开发领域也不用紧张。本书的组织结构

根据Sams Teach Yourself系列丛书的原则,本书分为24章,阅读每一章大概要花一小时。各章内容介绍如下:

第1章——本章主要让你熟悉Unity,了解Unity游戏引擎的各个部分。

第2章——本章教你如何使用Unity游戏引擎中最基本的内容“游戏对象”(game object),同时也将教你坐标系统和基本的变换。

第3章——在本章中,你将学习在材质上应用着色器和纹理时,如何使用Unity的图形资源管线,同时也会学习如何将这些材质应用于各种3D对象。

第4章——在本章中,你将学习如何使用Unity的地形系统打造游戏世界。为了创造出独一无二且令人惊叹的世界,不要怕辛苦。

第5章——本章将深入剖析灯光和摄像机。

第6章——现在我们开始做第一款游戏了!在本章中,你将学习制作一款名为Amazing Racer的游戏,这款游戏会用到前面几章学到的所有知识。

第7章——在本章中,你将开始学习Unity的脚本系统。如果你之前从来没有编程经验,也不要着急,本章的节奏很慢,足以让你打好基础。

第8章——本章将继续沿着第7章的内容深入学习一些脚本的进阶内容。

第9章——本章将带你领略现代视频游戏中常见的各种碰撞交互。你将会学习物理相关的知识,同时也会学习触发器碰撞。你还将学习如何创建物理材质,并将它们应用到你的游戏对象上。

第10章——是时候开始制作第二款游戏了!在本章中,你将学习制作一款名为Chaos Ball的游戏。游戏的名字就已经点明了游戏内容,游戏制作过程中将会使用大量的碰撞和物理材质,同时还将加入要求各种快速反应的策略。

第11章——预设将会让你创建重复使用的游戏对象。在本章中你将学习创建和修改预设。

第12章——在本章中,你将学习Unity用于创建2D游戏的强大工具,包括如何使用精灵和Box2D物理引擎。

第13章——在本章中,你将学习如何构建复杂的2D环境,而不仅仅是由简单的精灵瓦片构成的环境。

第14章——在本章中,你将学习如何使用Unity的强大用户界面系统,以及如何为游戏创建一个菜单。

第15章——现在开始制作第三个游戏!在本章中,你将学习制作Captain Blaster,这是一款复古风的太空射击游戏。

第16章——是时候学习粒子效果了。在本章中,你将体验Unity的粒子系统,使用粒子系统创建酷炫的效果并将它们应用到游戏当中。

第17章——在本章中,你将学习动画和Unity的动画系统,学习制作2D和3D动画以及强大的动画工具。

第18章——本章主要介绍Unity的Mecanim动画系统,你将学习如何使用Mecanim动画系统中强大的状态机以及如何混合动画。

第19章——在本章中,你将学习如何使用时间线系统制作动画序列。

第20章——本章开始制作第四款游戏,名为Gauntlet Runner。本游戏将使用一种新的方式来滚动背景,并展示如何实现高级游戏功能。

第21章——本章将学习如何在游戏中添加环境音效。你将学习如何使用2D或3D音效,并了解它们之间的差异。

第22章——本章将介绍如何为移动设备构建游戏。你也会学习使用移动端内置的加速器和多点触屏显示器。

第23章——现在我们要开始学习如何添加多场景并在多场景之间传递数据,同时也将学习部署游戏的设置。

第24章——现在,你将回顾学习Unity的整个过程。本章将会告诉你都学到了什么,并为你接下来的学习路线指明方向。

希望你能喜欢本书,并从中学到有用的知识。希望你在Unity游戏开发的旅途中一切顺利。随书资源

从链接http://fixbyproximity.com/Downloads/UnityBook.html中,你将获得本书用到的所有代码(这些代码都带有作者的注释),以及所有第三方艺术资源(纹理、字体和模型)和第三方的音频资源。致谢

特别感谢每一位帮助我撰写本书的人。

首先感谢Kara让我坚持下去。我不知道当本书面世的时候,我们会谈论些什么。但无论说什么,你应该都是对的。爱你,宝贝。

Link和Luke,我们应该让妈妈轻松一些,她已经快崩溃了。

感谢我的父母。现在,我也是父亲了。当我成为父亲之后,才理解你们为我付出了多少心血,谢谢你们将我抚养成人。

感谢Angelina Jolie,由于你在《Hackers》(1995)这部精彩的电影中扮演的角色,让我决定学习使用计算机。你低估了这个角色对十岁孩子的影响,你很出色!

感谢牛肉干的发明者,你的名字在历史长河中可能会慢慢被遗忘,但是你的产品却永远深入人心。我喜欢牛肉干,谢谢。

感谢Michael Wu,你不仅同意作为本书的技术编辑,而且还是我们的播客“Mikes’Video Game Podcast”中的Mike。

感谢Laura说服我撰写本书。同时,也要感谢她在GDC的时候帮我买午餐,这对我撰写本书起到了至关重要的作用。

最后,感谢Unity Technologies开发了Unity游戏引擎,否则本书就不会面世。第1章 Unity介绍

本章的主要任务是让你熟悉Unity环境,以方便在后面的学习中尽情发挥。首先介绍Unity的几种不同的许可证,然后教你安装Unity。本章也会教你如何创建一个新项目以及如何打开一个现有项目。之后会打开编辑器熟悉其中的各个组件。最后,学习如何在一个场景中使用鼠标或者键盘导航。本章需要动手实践,所以在阅读的过程中要下载安装合适的Unity。1.1 Unity安装

要使用Unity,首先需要下载并安装。现在的软件安装过程十分简单且直观。不过,在安装之前,我们先来介绍三种不同的Unity许可证:Unity Personal,Unity Plus和Unity Pro。Unity Personal是一个免费版本,它提供的功能足以满足本书中所有的示例和项目。事实上,Unity Personal包含了制作商业游戏需要的全部功能,只要你的要求不是太高,就可以一直使用这个版本开发商业游戏。如果你想使用Unity的高级功能,那么可以升级到Unity Plus或者Unity Pro(它们主要面向专业团队)。注意:Unity Hub

在本书出版的时候,已经有了一种用来安装Unity和创建项目的新方式。Unity Hub是不同项目的中心启动器。不幸的是,本书没有来得及加入相关介绍,但这并不意味着本章内容没有用。你仍然可以使用本章介绍的方法安装Unity并创建项目。即使你决定使用Unity Hub,本章后面的内容也一样适用。就像广告语中常说的那样:“包装升级,口味不变。”下载并安装Unity

本章假设你选择了Unity Personal版本的许可证。如果你选择的是Plus或者Pro版本,安装过程也基本相同,只在选择许可证的时候有些区别。当你准备好下载并安装Unity以后,请按照如下步骤操作:

1.在Unity下载页面按照指引下载Unity安装程序:http://unity3d.com/get-unity/download

2.运行安装程序,就像安装其他软件时一样按照提示操作即可。

3.出现图1-1的提示框时,请确保勾选了Unity 2018和Stand Assets这两个复选框。如果你的电脑空间足够,也可以安装示例项目和其他平台的构建支持选项,多安装的内容对本书中的操作没有影响。图1-1 选择要安装的组件

4.选择Unity的安装位置。建议使用默认选项,除非你有自己的想法。Unity的安装过程将会持续一段时间,在这段时间内,你将看到如图1-2所示的界面。

5.如果你已经有了Unity账户,可能会要求你登录账户。如果还没有,那么请按照指引注册一个新账号。请确保你可以访问填写的邮箱,因为需要在邮件中确认邮件地址。现在Unity已经安装完成。图1-2 Unity下载过程要持续一段时间,请耐心等候注意:Unity支持的操作系统和硬件

想要使用Unity,必须使用Windows PC或者Macintosh计算机。虽然有一个版本的编辑器可以运行在Linux上,但是Linux并不是官方支持的操作系统。你的电脑必须满足最低配置的要求(下面的配置来自本书出版时的官方网页):

1.Windows 7 SP1+、Windows 8或者Windows 10,64位系统。Mac OS X 10.9+。注意,Unity并没有在Windows或者OS X的服务器版本上测试过。

2.显卡要支持DX9(shader model 3.0)或DX11(特征等级为9.3)。

3.支持SSE2指令集的CPU(大多数CPU都支持)。

注意上面是最低配置要求。注意:Internet链接

书中所有的URL在本书出版时都是有效的,但是,链接地址有的时候会更改。如果你需要的资料在列表中找不到,那么可以使用网络搜索你想要的资源。1.2 熟悉Unity编辑器

我们已经安装了Unity,现在开始探索Unity编辑器。Unity编辑器由可视化组件组成,它允许以“所见即所得”的方式构建游戏。由于大多数交互实际上都发生在我们与编辑器之间,因此我们通常把它简称为Unity。本章接下来将介绍Unity编辑器的各种元素,以及如何使用这些元素来制作游戏。1.2.1 Project对话框

当第一次打开Unity的时候,首先显示的是Project对话框(见图1-3)。我们可以使用这个对话框打开最近使用的项目,浏览那些已经创建的项目,或者创建新项目。图1-3 Project对话框(这是Windows的界面,Mac版本也类似)

如果你已经使用Unity创建了一个项目,那么当你打开编辑器的时候,将会直接进入这个项目。要回到Project对话框,选择File>New Project打开Create New Project对话框,或者选择File>Open Project打开Open Project对话框。提示:打开Project对话框

Unity启动时,将会打开最后一个项目,我们可以通过设置更改这个行为。打开Edit>Preferences(Mac上是Unity>Preferences),然后取消勾选Load Previous Project on Startup复选框。动手做

创建第一个项目

现在开始创建第一个项目。注意项目的保存位置,这样下次你就能轻松地找到这个项目。图1-4显示了创建项目用到的对话框。我们按照下面的操作创建项目:

1.打开Unity,然后打开New Project对话框。(如果Unity打开了一个项目,那么选择File>New Project。)

2.为项目选择一个存放位置。建议你创建一个名为Unity Projects的文件夹来保存本书中用到的所有项目。如果你不知道将文件保存到哪里,那么可以让文件保存在默认位置。

3.在项目保存对话框中,将项目命名为Hour 1 TIY,Unity将会为项目创建一个同名的文件夹。

4.选择3D选项,忽略Add Asset Package和Enable Unity Analytics选项。

5.点击Create project。图1-4 第一个项目的设置注意:2D、3D、Package、Analytics如何选择

你可能很好奇New Project对话框中的其他选项是干什么用的。2D、3D选项是为了让你选择创建什么类型的项目。不要担心选择错误或者不确定自己到底要做什么类型的项目。这个选项仅会影响Unity的设置,你可以随时更改。Add Asset Package按钮可以让你将经常用的资源自动导入新项目中。Enable Unity Analytics选项是一个非常强大的工具,它可以生成游戏玩家的数据,然后可以基于这些数据分析玩家行为,从而改善游戏体验。这个功能对于开发人员来说特别强大,但是现在你还用不到它。1.2.2 Unity界面

前面我们已经安装了Unity,也查看了Project对话框。现在开始进行下一步,熟悉Unity界面。在第一次打开新创建的Unity项目时,将会看到好几个灰色的窗口——视图(view),并且所有视图中的内容基本都是空的,如图1-5所示。不要慌,我们将迅速使这个界面变得鲜活起来。后面我们将逐一研究每个视图的功能。首先,让我们看一下Unity界面的整体布局。图1-5 Unity界面

Unity允许用户定制自己的工作方式。这意味着任何视图都可以移动、停靠、复制或改变。比如说,单击“Hierarchy”(位于左边)可以选取Hierarchy视图,并把它拖到Inspector上(位于右边),这样可以让两个视图处于同一个选项卡下。也可以把光标放在视图之间的任何边框上,按住鼠标拖动来调整窗口大小。事实上,为什么不花点时间重新排列一下各个视图的布局,使它们按照你喜欢的样式排列呢?如果最终得到的布局不是你喜欢的样子,也不要感到恐惧。可以使用Window>Layouts>Default Layout这个选项,它能帮助你轻易地切换回内置的默认视图。在熟悉界面的过程中,你可以尝试使用各种布局(我最喜欢Wide布局)。如果你创建了一个自己很喜欢的布局,那么可以使用Window>Layouts>Save Layout将这个布局保存下来(本书中,我使用了名为Pearson的自定义布局)。当你保存了一个自定义布局之后,如果不小心打乱了布局结构,还可以轻松地还原到自定义的布局。注意:使用合适的布局

没有相同的两个人,同样,也不会存在同时令两个人都感到完美的布局。良好的布局有助于项目开发,让你倍感舒适。一定要花时间调整下布局,找到最适合自己的布局方式。接下来Unity将是你主要的开发工具,调整Unity的布局让它符合你的工作习惯,这样对之后的工作会很有好处。

复制视图的操作也是一个相当直观的过程。简单地右键单击任何视图选项卡(如图1-6的Inspector),把鼠标光标悬停在Add Tab上,将会弹出一个视图列表,你可以从中选择想要的视图(见图1-6)。你可能想知道为什么需要两个一样的视图。在频繁移动视图的过程中,视图有可能会被意外关闭。重新添加就会恢复。此外,还要考虑创建多个Scene视图的情况。每个Scene视图都可以与项目内的特定元素或轴对齐。如果希望看到它的实际应用,可以使用Window>Layouts>4 Split命令,查看4 Split的内置布局(如果之前你已经创建了一种喜欢的布局,在体验4 Split布局前一定要记得先保存你刚创建的布局)。图1-6 创建一个新的选项卡

现在,我们已经从整体上对Unity界面有了了解,接下来,让我们看看每一个视图的功能。1.2.3 Project视图

项目创建后使用的所有资源(文件、脚本、纹理、模型等)都可以在Project视图中找到(见图1-7)。这个窗口显示了整个项目用到的所有资源和组织结构。创建一个新项目后,你会发现一个名为Assets的文件夹。如果进入硬盘保存项目的文件夹,也会发现名为Assets的文件夹。这是因为Unity为Project视图中的文件夹在硬盘上制作了相同的镜像。如果在Unity中创建一个文件或文件夹,资源管理器中就会出现对应的文件或文件夹(反之亦然)。可以执行简单的拖放操作,在Project视图中移动资源。这样就可以在文件夹中添加资源,或者自由地组织项目结构。图1-7 Project视图注意:资源和对象

资源是在Assets文件夹中任何以文件形式存在的条目,所有的纹理、网格、声音文件、脚本等都可以称为资源。同样,游戏对象是组成场景或者关卡的对象。你可以使用游戏对象创建资源,也可以使用资源创建游戏对象。警告:移动资源

Unity维护着项目中各种资源之间的联系。因此,在Unity外移动或删除资源可能会导致潜在的问题。一般来说,应该在Unity中执行所有的资源管理操作。

当你在Project视图中单击一个文件夹的时候,就会在右边的Assets区域下显示该文件夹中的全部内容。如图1-7所示,当前Assets文件夹是空的,因此在右边不会显示任何内容。如果想要创建资源,可以单击Create按钮,它会弹出一个下拉菜单,利用这个菜单可以把各种资源和文件夹都添加到项目中。提示:项目组织

资源的组织方式在项目管理中极其重要。随着项目逐渐变大,资源的数量也开始增多,最终查找某个资源可能会变成一项冗繁的工作。我们可以利用一些简单的组织规则,避免这类问题的产生。

1.每种资源类型(场景、脚本、纹理等)都应该创建专属文件夹。

2.每种资源都应该属于一个文件夹。

3.如果要在文件夹中创建文件夹,那么要确保它们的结构明确。文件夹的用途应该明确而不是含糊不清。

遵循上面的三条原则将会让问题变得简单很多。

Favorites按钮可以让你迅速选择某种类型的全部资源,它能让你快速扫视这种类型的资源。当单击Favorites中的一个按钮(例如All Models)或者利用内置的搜索栏进行搜索时,可以缩小Assets与Asset Store中资源的显示范围。如果单击Asset Store,就可以在Unity Asset Store中浏览满足搜索条件的资源(见图1-8)。然后还可以按免费资源还是付费资源进一步缩小显示范围。这是一个特别出色的功能,它可以让你在不离开Unity界面的情况下找到想要的资源。图1-8 搜索Unity Asset Store1.2.4 Hierarchy视图

Hierarchy视图与Project视图在很多地方都很类似(见图1-9)。它们之间的区别是:Hierarchy视图显示了当前场景而不是整个项目中的内容。当首次使用Unity创建项目时,会创建一个默认场景,场景中包含两项:Main Camera和Directional Light对象。当你向场景中添加资源的时候,它们就会出现在Hierarchy视图中。与Project视图一样,可以使用Create功能向场景中快速添加资源,也可以使用内置的搜索栏进行搜索,还可以单击并拖动对象来组织和“嵌套”它们的结构。图1-9 Hierarchy视图提示:嵌套

嵌套是一个专业术语,用于建立两个或者多个对象之间的关系。在Hierarchy视图中,单击一个对象并把它拖到另一个对象上,就会把这个对象嵌套在另一个对象中,这样就会创建父/子关系(parent/child relationship)。在这种情况下,上层的对象是父对象,其下的任何对象都是子对象。很容易分辨父子对象的关系,因为它们以缩进形式显示。后面我们将会发现,Hierarchy视图中具有嵌套关系的对象可能会影响它们的行为。提示:场景

场景是用来描述关卡或者地图的术语。在Unity项目的开发过程中,每一个场景都有自己的一组对象或者行为。因此,如果你创建了一个游戏,其中包含大雪关卡和丛林关卡,那么这两个关卡应该属于不同的场景。当你在网上搜索某些问题的答案时,你会发现场景(scene)和关卡(level)是混用的。提示:场景组织

当创建了一个新的Unity项目后,要做的第一件事就是在Project视图的Assets文件夹下创建一个名为Scenes的文件夹。把所有的场景(或关卡)放在相同的位置。一定要给场景起一个有意义的名称,即可以描述出它的用途。Scene1现在听起来像是一个非常好的名字,但是当你创建了30个场景之后,就根本无法从名字上判断这个场景到底是干什么用的了。1.2.5 Inspector视图

Inspector视图能够让你查看当前选中的对象的全部属性。从Project或Hierarchy视图中单击任何资源或对象,Inspector视图将自动显示对应的信息。

如图1-10所示,在Hierarchy视图中选择了Main Camera对象之后,就可以在Inspector视图中查看它的属性。图1-10 Inspector视图

下面看看Inspector视图的各项功能。

1.如果勾选对象名称旁边的复选框,就会禁用这个对象,它就不会出现在项目中。

2.下拉列表(比如Layer或Tag列表,后面将介绍它们的详细信息)用于从一组预先定义的选项中选择合适的选项。

3.文本框、下拉菜单和滑动条可以更改它们的值,所做的更改将会自动并且立即反映在场景中——即使游戏处于运行状态也会这样。

4.每个游戏对象就像是不同组件(比如图1-10所示的Transform、Camera和GUI Layer)的容器。可以通过取消选中这些组件或者单击右键然后选择Remove Component命令移除组件来禁用这些组件。

5.点击Add Component按钮可以添加组件。警告:场景运行时更改对象属性

更改对象的属性并且可以立即在运行的场景中查看更改后的效果的功能非常强大。它能让你动态调整诸如运动速度、跳跃高度、碰撞力度之类的属性,而不用停止后再重新启动游戏。不过要注意:在场景运行时更改的任何对象属性都将在场景运行结束时恢复。如果你在场景运行时进行了更改,而且喜欢更改后的效果,那么一定要记住都更改了哪些内容,以便在场景停止运行时再次设置它们。1.2.6 Scene视图

Scene视图对你来说是最重要的视图,因为它能让你在构建游戏的过程中实时看到游戏中的内容(见图1-11)。使用鼠标和几个快捷键,你就可以在场景内四处移动,然后将对象放置在合适的地方。它会给你一种强烈的掌控感。图1-11 Scene视图

我们稍后将学习如何在场景内四处移动,首先学习Scene视图中的各个功能。

1.绘制模式(Draw Mode):确定场景如何绘制。默认选项是Shaded(阴影),意思是说所有对象将利用它们的纹理绘制。

2.2D/3D视图(2D/3D view):确定场景按照2D视图显示还是按照3D视图显示。注意,在2D模式下,场景小工具(后面会介绍)不会显示。

3.场景光照(Scene Lighting):用于确定Scene视图中的对象是使用默认的环境光(Ambient Lighting),还是通过实际存在于场景内的灯光来照明。默认情况下使用内置的环境光。

4.试听模式(Audition Mode):用于设置Scene视图中音频源的功能。

5.游戏叠层(Game Overlay):用于控制场景视图中的天空盒、雾效等其他效果是否显示。

6.小工具选择器(Gizmo Selector):让你能够选择哪些“小工具”(gizmo,帮助可视化调试或者显示图像图标等的小工具)会出现在Scene视图中,还能控制放置网格是否可见。

7.场景小工具(Scene Gizmo):能控制你当前的朝向,并能让场景视图与某个轴对齐。注意:场景小工具

场景小工具在Scene视图中起到了很重要的作用。我们可以看到,该控件具有与坐标轴对齐的X、Y和Z指示器。它能让你很容易确定现在查看的是场景中的哪个方向。在第2章中我们将讨论轴和3D空间。小工具还允许主动控制场景的对齐方式。如果单击小工具中的一个轴向,就会发现Scene视图将会立即对齐那个轴,并且被放置到某个方向,比如顶部或左边。单击小工具中心的方框,将在Iso模式与Persp模式之间切换。

Iso是Isometric的缩写,它是没有应用透视的3D视图。Persp是Perspective的缩写,它是应用了透视的3D视图。自己尝试操作一下,看看它是如何影响Scene视图的。你会发现场景小工具的图标会从Iso的平行线变更为Persp的分叉线,就像牛蹄子一样。1.2.7 Game视图

最后要学习的是Game视图。一般来说,Game视图允许你在编辑器内“玩”游戏,它会模拟当前场景。Game视图中所有元素的行为都像完全构建了项目一样。图1-12显示了Game视图的样子。尽管从技术上讲Play、Pause和Step按钮不是Game视图的一部分,但是它们可以控制Game视图,所以也将它们显示在图1-12的Game视图中。图1-12 Game视图提示:丢失Game视图

如果发现Game视图隐藏在Scene视图后面,或者完全看不到Game视图选项卡,不要担心。只需要单击Play按钮,Game视图选项卡就会出现在编辑器中,然后开始运行游戏。

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

1.播放:Play按钮可以播放当前的场景。所有的控件、动画、声音和效果都将显示。一旦游戏运行起来,其效果就像是在独立的播放器(比如在PC或移动设备上)中运行一样。游戏运行过程中想要停止游戏运行,可以再次单击Play按钮。

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

3.步进:Step按钮在Game暂停时可用,它可以让游戏以单帧的速度运行。这允许缓慢地“单步”运行游戏,可以让你调试遇到的问题。在游戏正在运行时按下Step按钮将导致游戏暂停。

4.分辨率下拉菜单:从这个下拉菜单中,可以选择希望Game视图窗口在运行时显示的分辨率。默认选项是Free Aspect,可以更改这个选项,以匹配游戏的目标平台的分辨率。

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

6.静音(Mute audio):当游戏运行时,这个选项可以让游戏静音。当有人坐在你旁边,已经厌倦了听你测试时游戏运行带来的音效时,你就可以很方便地用这个按钮将音效关闭。

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

8.Gizmos:它既是一个按钮,也是一个下拉菜单。这个按钮用于确定游戏正在运行时是否显示小工具,默认不显示。从下拉菜单(点击旁边的小箭头就可以弹出)中可以选择显示哪些小工具。注意:运行、暂停和关闭

刚开始学习的时候可能无法区分运行(running)、暂停(paused)和关闭(off)这些术语的含义。当没有在Game视图中运行游戏的时候,我们就称游戏是关闭的。当游戏处于关闭状态时,游戏控件将不会工作,也无法播放游戏。当按下Play按钮时,游戏开始运行,我们就说游戏正在运行。播放、执行和运行都指同一件事。如果游戏正在运行,并且按下Pause按钮,游戏就会停止运行,但是仍将保持它最后运行的状态。此时游戏就处于暂停状态。暂停的游戏与关闭的游戏之间的区别是:暂停的游戏可以从暂停的位置继续运行,而关闭的游戏则需要从头开始运行。1.2.8 隆重介绍:工具条

虽然工具条并不是视图,但是它在Unity编辑器中起到了举足轻重的作用。图1-13显示了工具条的组成。

1.变换工具(Transform Tool):这些按钮能让你操纵游戏对象,后面我们会更详细地学习它们的使用。要特别注意那个小手按钮,它是Hand工具,将在本章后面介绍。

2.变换小工具(Gizmo)切换开关:这些切换开关可以控制小工具如何显示在Scene视图中,目前暂且不管它们。

3.Game视图控件(Game View Control):这些按钮用于控制Game视图。

4.账户和服务(Account and Service)控件:这些按钮可以让你管理正在使用的Unity账户以及项目中使用的Unity服务。

5.图层下拉菜单(Layers Drop-down):这个菜单用于决定哪些对象图层将出现在Scene视图中。默认情况下,所有的内容都将出现在Scene视图中。目前暂且不管它。第5章中我们会介绍图层相关的内容。

6.布局下拉菜单(Layout Drop-down):这个菜单允许快速更改编辑器的布局。图1-13 工具条1.3 在Unity场景视图中导航

Scene视图可以对游戏的结构进行诸多控制。可视化摆放和修改对象的能力非常强大。不过,如果不能在场景内四处移动,上面提到的功能也没有发挥的余地。本节将介绍几种更改位置和在Scene视图中导航的方式。提示:缩放

不管使用什么方式导航,滚动鼠标滚轮可以在场景中缩放。默认情况下,Scene视图会在场景中心缩放。如果在滚动滑轮的过程中按住Alt键,那么就会在鼠标指向的位置执行缩放操作。1.3.1 Hand工具

Hand工具(快捷键:Q)提供了一种使用鼠标移动Scene视图的简单方法(见图1-14)。如果你使用的是单键鼠标,那么会发现这个工具特别有用(因为其他方法都需要双键鼠标)。表1-1简要解释了Hand工具中各个控件的功能。图1-14 Hand工具表1-1 Hand工具的控件

在下面的链接中可以找到Unity的所有快捷键:http://docs.unity3d.com/Manual/UnityHotkeys.html。警告:不同的摄像机

在使用Unity的过程中,我们将遇到两种摄像机。第一种是标准的游戏对象摄像机,你可以看到场景中已经有了一个这样的摄像机(默认情况);第二种比起传统意义上的摄像机更像是一种假想的摄像机,它决定了我们可以在Scene视图中看到什么。本章提到的摄像机指的都是第二种摄像机。我们并不会实际操纵游戏对象摄像机。1.3.2 Flythrough模式

Flythrough模式让你能够以传统第一人称控制模式在场景中移动。玩过第一人称游戏(比如第一人称射击游戏)的读者都很熟悉这种模式。如果你没有玩过类似的游戏,那么可能要花点时间习惯这种模式。不过,一旦熟悉了这种模式,就不会忘记。在Scene视图中按住鼠标右键会进入Flythrough模式。表1-2展示的所有操作都需要按住鼠标右键。表1-2 Flythrough模式中的行为提示:快速定位

可以用多种方式在场景导航中获得精确控制。不过有时你只是想要迅速浏览下场景。对于这种情况,最好使用快速定位(Snap Control)的方式。如果想要快速导航并放大场景中的某个游戏对象,可以在Hierarchy视图中选择对应的对象使其高亮,然后按下F(Frame Select的快捷键)键。你会发现场景将迅速定位到那个游戏对象。另一种迅速定位的方式你已经见过。利用场景小工具可以快速把摄像机定位到任何一个轴。这样,就可以从任意角度查看对象,而不必手动四处移动场景摄像机。一定要学会快速定位,这样在场景中快速导航就会变得非常快!提示:进一步学习

当你打开New Project或者Open Project对话框的时候,可能会被对话框中的Learn按钮吸引(见图1-15)。点击这个按钮就可以看到Unity新的学习资源。这些资源非常有趣,如果喜欢可以花一些时间学习一下,这样将会更加熟悉Unity引擎的使用。(提及它是我的一点私心,因为这些教程的制作有我的功劳。)图1-15 Project对话框中的Learn部分1.4 本章小结

本章从下载和安装Unity开始,我们首先认识了Unity游戏引擎,然后学习了如何打开和创建项目,之后又学习了Unity编辑器中各种不同的视图,最后学习了如何在Scene视图中导航。1.5 问答

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

答:不完全一样。一般来说它们之间最大的区别是:资源在硬盘上有对应的文件或者有一组文件与之对应,而游戏对象并没有。资源可能包含游戏对象,也可能不包含游戏对象。

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

答:根本不需要。大多数控件和选项都已经设置为了默认状态,默认状态基本上涵盖了大多数使用情况。随着你对Unity的认识进一步加深,可以继续学习各种不同控件的更多知识。本章只是告诉你Unity编辑器中都包含什么,然后对它们有一个大概的认识。1.6 测验

花些时间完成下面的练习,确保掌握了本章的内容。

问题

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

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

3.判断题:应该总是在Unity中移动资源文件,而不应该使用操作系统的文件管理器。

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

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

答案

1.错误 2.Scene视图 3.正确 4.错误 5.Flythrough模式1.7 练习

花点时间练习一下本章中所学的概念。从根本上理解Unity编辑器很重要,因为这里的知识后面都会用到。为了完成这个练习,请按照如下步骤操作。

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

2.在Project视图中使用Create>Folder在Assets文件夹下创建一个Scenes文件夹。

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

4.向场景中添加一个立方体。有三种方式可以完成这个操作:单击顶部的GameObject菜单,在弹出式菜单中选择3D Object>Cube命令;选择Hierarchy视图中的Create>3D Object>Cube命令;在Hierarchy视图中点击右键,然后选择3D Object>Cube命令。

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

6.练习使用Flythrough模式、Hand工具和快速定位在Scene视图中导航。使用立方体作为参照物帮助你进行导航。第2章 游戏对象

游戏对象是Unity游戏项目的基本组件。场景中存在的每个物体都是或者都基于游戏对象。在本章中,你将学习Unity中的游戏对象。不过,在开始使用Unity中的对象之前,必须先学习2D和3D坐标系统。学习完这些系统之后,将开始使用Unity内置的Unity游戏对象,最后将学习各种游戏对象变换。本章中学习的知识是本书的基础,一定要花时间学好它。2.1 维度和坐标系

那些华丽而富有魅力的视频游戏其实都是建立在数学基础上的。所有的属性、运动和交互都可以归结为数字运算。幸运的是,很多基础都已经打好。数学家辛苦工作了几个世纪,发现、创建和简化了各种过程。正是数学家的杰出工作,我们才可以利用现代软件轻松地创建游戏。你可能认为游戏中的对象只是随意地摆放在空间中,但是实际上每种游戏空间都具有维度,并且每个对象都置身于一种坐标系(或网格)中。2.1.1 3D中的D

如前所述,每一款游戏都会使用某种级别的维度。可能你最熟悉的维度系统是2D和3D,它们分别是二维(two-dimensional)和三维(three-dimensional)的缩写。2D系统是一个平面系统。在2D系统中,只处理垂直和水平元素(换句话说就是上、下、左、右)。像Tetris、Pong和Pac Man这样的游戏就是2D游戏。3D系统跟2D系统类似,但它多一个维度。在3D系统中,不仅具有垂直和水平方向(上、下、左、右),还具有深度(里和外)。图2-1完美阐述了2D正方形和3D正方形,也就是立方体(cube)。注意在3D立方体中有Z轴,它看上去就像是凸出来了一样。图2-1 2D平面和3D立方体注意:学习2D和3D

Unity是一个3D引擎。因此,利用它创建的所有项目一般都使用三维系统。所以,用Unity无法制作纯粹的2D游戏。现代软件表现每个物体的时候都是按照3D来渲染的。2D游戏同样拥有Z轴,只不过不用罢了。你可能想知道为什么我们还要不胜其烦地介绍2D系统。事实是:即便在3D项目中,仍然有许多2D元素。纹理、屏幕元素和绘图技术都使用2D系统。Unity有一套强大的工具用于制作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展示了同一个正方形在不同坐标系下的坐标表示,阐释了世界坐标系与本地坐标系之间的区别。图2-3 世界坐标系(左)和本地坐标系(右)

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

Unity游戏中的所有形状、模型、灯光、摄像机和粒子系统等都具有一个共同点:它们都是游戏对象。游戏对象是每个场景的基本单元。虽然游戏对象比较简单,但是却非常强大。归根结底,游戏对象只不过是一种变换(将在本章后面详细讨论)和一个容器。游戏对象作为容器用于保存各种使对象更生动、更有意义的组件。至于向游戏对象中添加什么,取决于你自己。Unity有众多组件,它们为Unity带来了多样性。在本书的课程中,你将学习使用很多组件。注意:内置的对象

并不是每个你使用的游戏对象一开始都是空对象。Unity有多个内置的游戏对象可以拿来就用。单击Unity编辑器顶部的GameObject菜单项,就可以看到大量可用的内置对象。学习使用Unity的很大一部分内容就是学习使用内置的游戏对象和自定义的游戏对象。动手做

创建一些游戏对象

现在我们花一些时间熟悉游戏对象。你将创建几个基本的对象,并且检查它们的各种组件。

1.创建一个新项目,或者在已经存在的项目中创建一个新场景。

2.单击GameObject菜单项并选择Create Empty命令,添加一个空游戏对象(也可以通过按下Ctrl+Shift+N组合键(PC用户)或者Command+Shift+N组合键(Mac用户)来创建空游戏对象)。

3.查看Inspector视图,将会发现你刚才创建的游戏对象除了有一个变换组件之外,没有任何其他组件。(所有的游戏对象都有一个变换组件。)在Inspector视图中单击Add Component按钮,查看所有可以添加到对象的组件。

4.单击GameObject菜单项,把光标放在3D Object命令上,然后从列表中选择Cube命令,这样就可以在项目中添加一个立方体。

5.注意立方体具有空游戏对象所不具有的各种组件。网格(mesh)组件让立方体可见,碰撞器(collider)组件让它能够在物理层面与其他对象交互。

6.最后,在Hierarchy视图中单击Create下拉菜单,并从列表中选择Light>Point Light命令,在项目中添加一个点光源(point light)。

7.可以看到点光源仅仅与立方体共享了变换组件,它的主要功能是发光。你可能还会注意到,点光源发出的光由已经添加到场景中的直接光决定。2.3 变换

现在,你已经学习、探索了不同的坐标系,并且尝试创建了一些游戏对象。现在应该把它们二者融合起来。在使用3D对象时,经常会听到变换(transform)这个术语。根据上下文,变换既可能是一个名词,也可能是一个动词。3D空间内的所有对象都有位置、旋转和缩放比例这三个属性。如果把它们结合起来,就会得到对象的变换(名词)。此外,如果变换指的是更改对象的位置、旋转或缩放比例,那它就是一个动词。Unity把它的两种含义用变换组件(transform component)统一起来。

我们回想下之前的内容,就会发现变换组件是每个游戏对象都必须具有的唯一组件。每个空游戏对象都具有变换。使用这个组件,可以查看对象当前的变换参数,也可以改变对象的变换参数。这现在听起来可能令人糊涂,但它相当简单,过不了多久你就会了解。由于变换由位置、旋转和缩放比例组成,执行变换就有三种独立的方式,分别为平移、旋转和缩放。这些变换可以使用Inspector或变换工具实现。图2-4和图2-5显示了哪些Inspector组件和工具与哪些变换相关联。图2-4 Inspector中的Transform选项图2-5 Transform工具提示:Rect的使用

术语Rect(rectangle的缩写)常用于描述2D游戏对象之间的关系。比如说,像精灵这样的2D对象与3D对象有着类似的变换类型。你可以使用简单化的Rect工具控制它们的位置、旋转和缩放(Rect工具的位置见图2-5)。此外,Unity中的用户界面(UI)对象具有不同的变换,称为Rect变换。在第14章中,我们会详细介绍它。现在,你只需要了解它与应用在UI上的transform一样即可。2.3.1 平移

在3D系统中改变对象的坐标位置称为平移(translation),这是最简单的变换。当你平移一个对象时,它将会沿着轴移动。图2-6演示了一个沿着X轴平移的正方形。图2-6 简单的平移

当你选择Translate工具的时候(快捷键:W),会注意到所选的任何对象在Scene视图中将稍微有所改变。更确切地讲,你会看到3个箭头出现,它们沿着3个轴从对象的中心指向外面。它们是平移小工具,它们可以帮助你在屏幕上移动对象。单击并按住其中任何一个轴的箭头将使其变成黄色。然后,移动鼠标,对象将沿着那个轴移动。图2-7展示了平移小工具的样子。注意,这个工具只会出现在Scene视图中。图2-7 平移小工具提示:Transform组件和Transform工具

Unity提供了两种方式来管理对象的变换。知道何时使用哪种方式很重要。当你利用Transform工具在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工具的时候缩放小工具的样子。图2-10 在X轴和Y轴上执行缩放操作图2-11 缩放小工具2.3.4 变换的风险

本章前面介绍的变换都是在本地坐标系中进行的。所以,我们所做的更改可能会影响未来的变换操作。例如,图2-12展示了如果两种变换的顺序不同,可能产生不同的效果。图2-12 变换顺序的影响

正如你所见,如果不注意变换的顺序,可能会导致不可预知的后果。幸好,只要提前安排好变换,就能得到正确的效果。

·平移:平移是一种惰性相当强的变换,这意味着在它之后应用的任何改变一般不会受其影响。

·旋转:旋转将改变本地坐标系中轴的方向。在旋转之后应用的平移将导致对象沿着新的轴移动。例如,如果要围绕Z轴把对象旋转180°,然后在正Y方向上移动,对象实际的表现是在向下(而不是向上)移动。

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载