Unity开启篇(三) —— 一款简单射击游戏示例 (一)
版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.12.08 星期六 |
前言
Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件。其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、WebGL(需要HTML5)、Windows phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac和Windows的网页浏览。它的网页播放器也被Mac 所支持。网页游戏 坦克英雄和手机游戏王者荣耀都是基于它的开发。
下面我们就一起开启Unity之旅。感兴趣的看下面几篇文章。
1. Unity开启篇(一) —— Unity界面及创建第一个简单的游戏 (一)
2. Unity开启篇(二) —— Unity界面及创建第一个简单的游戏 (二)
开始
首先看下写作环境
C# 7.2, Unity 2018.1, Unity
在Unity 2018.1
最新更新的Unity教程系列中,您将学习如何从头开始使用C#
在Unity
中制作第一款游戏:一款名为Bobblehead Wars
的双棒射击游戏!
说游戏开发是一个挑战,将是今年的轻描淡写。
直到最近,制作3D游戏需要底层编程技能和高级数学知识。
这一切都随着Unity
发生了改变。 Unity已经将游戏编程变成了一种现在可供一般人使用的工艺。然而,Unity仍然包含那些复杂的AAA
功能,因此,随着您作为开发人员的成长,您可以开始在游戏中利用它们。
每个游戏都有一个开始,你的学习之旅也是如此 - 而且这个游戏将会动手实践。当然,你可以查看令人脑部麻木文档的页面,或者你可以通过创建游戏来学习。
你显然更喜欢后者,所以在本教程中,你将构建一个名为Bobblehead Wars
的游戏。
在这个游戏中,你扮演一个kickass
太空船的角色,刚刚完成了一艘外星人的船只。
![](https://img.haomeiwen.com/i3691932/b361c7a509487ce2.png)
在摧毁敌舰后,我们的太空飞船决定在一个荒凉的外星球上度假。 然而,外星人设法打断他的太阳晒黑 - 他们出血了。 毕竟,太空海军陆战队员是银河系这一部分的美味佳肴!
这个游戏是一个双棒射手,你接受成群的饥饿的外星人无情地攻击:
![](https://img.haomeiwen.com/i3691932/fd8aeec1edd42f21.png)
你会投入一些随机的能量以保持游戏的趣味性,但成功的关键在于快速的步法和快乐的手指触发操作。
Installing and Running Unity - 安装和运行Unity
在你接受外星人之前,你需要自己下载Unity
引擎。 请访问以下网址:http://unity3d.com/get-unity。 您将看到一个包含许多选项的页面,您可以从中选择:
![](https://img.haomeiwen.com/i3691932/f969ed2abf40048e.png)
如果你愿意,你可以用Pro
,但是在你的旅程的这个阶段它是不用这么高级版本的。对于本教程,您只需要free
版本。事实上,您甚至可以发布一个完整的游戏并在Steam
上以免费版本出售。
在Unity 5
之前,免费版本中禁用了某些引擎功能。现在,所有使用个人版本的人都可以使用所有关闭的功能。
如果你很好奇,下面就看一下这几个版本:
-
Unity Personal:这个版本允许您创建一个完整的游戏并分发它,而无需支付Unity任何东西。但是,贵公司每个会计年度的收入必须低于100,000美元。另一个问题是每个游戏都会出现一个你不能删除的
“Made by Unity”
的启动画面。 -
Unity Plus:此版本每月收费35美元。它配备了性能报告工具,
Unity Pro
外观和一些其他功能。此版本要求贵公司每年的收入低于200,000美元,并允许您禁用或自定义“Made by Unity”
闪屏。 - Unity Pro:这是可用的最高级别。它的价格为每月125美元,并提供有用的Unity服务,专业的iOS和Android附加组件,并且没有闪屏。也没有收入上限。
还有一个企业版,适用于希望访问源代码和企业支持的大型组织。
注意:最近Unity从
“perpetual”
模式切换到基于订阅的模型,其中您支付了一次性费用。
在Personal
下,单击Try Personal
并从以下页面下载该软件。
![](https://img.haomeiwen.com/i3691932/8c8278a1d991aacc.png)
给它一点时间下载,然后双击它开始安装。
单击安装程序,直到出现以下选择组件的屏幕:
![](https://img.haomeiwen.com/i3691932/e8c436d6ea0024bc.png)
注意:您可以在Windows或Mac计算机上使用
Unity
进行同样的开发。
本教程中的屏幕截图是在Windows
上制作的,因为这是大多数Unity开发人员使用的(主要是因为Windows
是一个更受欢迎的游戏平台)。
如果你在Mac上进行开发,你的截图可能会略有不同,但不要担心 - 你仍然应该能够顺利完成本教程。
默认情况下,您应选择Unity Engine, Documentation and Standard Assets
。 这就是为什么它们很重要:
-
Unity Engine:这是推动所有游戏的强大动力。 更新引擎时,请保持此选项 - 并且仅选择此选项 - 以避免下载不必要的文件。如果您的版本号与我们显示的版本号略有不同,请不要担心 - Unity会不断更新。
-
Documentation:当您遇到不明白的问题时,这是您的生命线。 下载文档可以使您免于依赖互联网。 在旅行或处理不稳定的网络时,拥有它特别有用。
-
Standard Assets:这些是帮助您构建游戏的附加对象,例如第一人称和第三人称角色控制器,抗锯齿和其他有用的项目。
注意:iOS构建支持仅适用于
macOS
。 对于Android版本支持,您需要下载Android Studio
。 这本书详细介绍了这一点。在这种情况下,您只需再次运行安装程序,取消选中所有内容,然后检查所需的平台。 按照安装程序完成安装这些组件。
安装完成后运行程序。 您将看到的第一件事就是要求您提供Unity凭据的对话框。
![](https://img.haomeiwen.com/i3691932/727cb92ad6a5fb20.png)
如果您没有帐户,请单击create one
并按照步骤操作。 Unity帐户是免费的。 每次启动时都必须登录,但是当没有网络时,引擎确实处于脱机模式。
登录后,您将看到一个项目列表,可以轻松访问您的所有项目。
![](https://img.haomeiwen.com/i3691932/76aa0cbd48c7eb13.png)
使用Unity 2018
,您现在可以使用Learn
选项卡。 此选项卡提供了许多不同的Unity教程,可帮助您快速了解编辑器。
![](https://img.haomeiwen.com/i3691932/c21be16d39be7168.png)
完成本教程后,请务必查看它们。 要开始使用,请单击New
按钮。
您应该看到项目创建对话框。 你会注意到你有几个选项,所以填写如下:
![](https://img.haomeiwen.com/i3691932/8c4c9cb19704d4e3.png)
以下是此屏幕上的所有内容:
-
Project name
代表游戏的内部名称。它不会与您的最终游戏一起发布,因此您可以根据自己的喜好命名项目。给这个起名叫Bobblehead Wars
。 -
Location
字段是您保存项目和相关项目的位置。单击Location field
中的三个点以选择计算机上的位置。 -
Unity 2018
附带了一个名为Templates
的新功能。 Unity过去只在3D和2D之间切换。它要求最终用户打开一系列设置,以使简单的游戏看起来很好。现在,Unity提供了配置了最佳设置的不同模板。例如,如果您正在为移动设备开发游戏,则可以选择轻量级RP(Lightweight RP )
模板。模板不会以任何方式限制您。它们只是在配置编辑器和引擎时节省您的时间。目前,请确保选中3D
。 -
Add Asset Package
按钮允许您在游戏中包含其他资源或从Unity Asset Store
下载的任何其他资产。你现在不需要做任何事情。 - 最后,您可以选择
Enable Unity Analytics
,它可以让您深入了解玩家的体验。通过阅读数据,您可以确定玩家挣扎并根据反馈进行更改的区域。本教程不会深入研究分析(Analytics)
,因此请将开关设置为off
。
准备好后,单击Create project
按钮。欢迎来到Unity的世界!
Learning the Interface - 熟悉界面
当您的项目加载时,您将看到一个充满信息的屏幕。一开始感觉有点不知所措是完全正常的,但不要担心 - 当你完成本教程时,你会对所有事情感到满意。
您的布局可能如下所示:
![](https://img.haomeiwen.com/i3691932/230917c04dd9eca9.png)
如果没有,请单击右上角的Layout
按钮,然后从下拉菜单中选择2 by 3
。
![](https://img.haomeiwen.com/i3691932/8a07cbb865cb8b70.png)
每个布局由几个不同的视图组成。 view
只是用于操作引擎的一组信息。 例如,有一个用于在您的世界中放置对象的视图。 您可以通过另一种view
玩游戏。
以下是分解为单个视图时界面的外观:
![](https://img.haomeiwen.com/i3691932/cb409e4074e03e1b.png)
每个红色矩形都概述了一个视图,该视图有自己的用途,界面以及与之交互的方式。
要查看所有视图的列表,请单击菜单栏上的Window
选项。
![](https://img.haomeiwen.com/i3691932/4349b5e4689d215a.png)
Unity
用户界面是完全可自定义的,因此您可以根据需要添加,删除和重新排列视图。
在使用Unity时,您通常希望将视图重新排列为适合给定任务的布局。 Unity允许您保存布局以供将来使用。
在编辑器中,查找Game tab
(左下角的视图)并右键单击它。 从下拉菜单中选择Add Tab
,然后选择Profiler
。
![](https://img.haomeiwen.com/i3691932/9ef013ee30562833.png)
Profiler
视图可让您在游戏运行时对其进行分析。 不幸的是,profiler
也阻止了Game view
,所以你在profiler
游戏时将无法玩游戏 - 不是那么有用。
单击并按住Profiler tab
并将其拖动到上面的Scene tab
。
![](https://img.haomeiwen.com/i3691932/d501af44d71d5ad9.png)
如您所见,可以移动,停靠和排列视图。 它们也可以作为浮动窗口存在于编辑器外部。
要保存布局,请选择Window \ Layouts \ Save Layout ...
并将其命名为Debugging
。
![](https://img.haomeiwen.com/i3691932/3aefb41ef9c45e63.png)
每当需要访问此特定布局时,可以选择Layout
按钮并选择Debugging
。
![](https://img.haomeiwen.com/i3691932/82c73af2ef23d39a.png)
点击后,您会看到所有view的列表。
![](https://img.haomeiwen.com/i3691932/2ce2c8dde5744791.png)
您还可以删除布局。 如果您不小心丢弃了库存布局,则可以恢复默认布局。
Organizing your Assets - 组织资源
初学者到Unity可能会想象你在Unity中从头到尾开发你的游戏,包括编写代码,创建3D模型和纹理等等。
实际上,更好的思考Unity的方法是作为一种集成工具。 通常,您将在单独的程序中编写代码或创建3D模型或纹理,并使用Unity将所有内容连接在一起。
对于Bobblehead Wars
,我们已经为您创建了一些3D模型,因为学习如何在Blender
中对事物进行建模会很繁琐,要写一本书!
在本教程中,您将学习如何将模型导入游戏。
但在你做之前,组织起来是值得的。 在这个游戏中,你将拥有大量资源,因此以易于查找的方式组织它们至关重要。
导入和组织资源的视图称为Project Browser
。 它模仿文件系统的组织。
![](https://img.haomeiwen.com/i3691932/260843defa62d688.png)
在Unity的早期版本中,每个Project Browser
都默认没有任何内容。 在2018年,它现在带有一个Scenes
文件夹和一个名为SampleScene
的新场景。 您可以将场景视为游戏中的关卡。 您可以将所有级别划分为单个场景,也可以将所有级别保存在一个场景中。 这是你的选择。
在Project Browser
中,选择Assets
文件夹,然后单击Create
按钮。 从下拉菜单中选择Folder
,并将其命名为Models
。 这将是您所有模型的家。 您可能会觉得在文件系统而不是Project Browser
中创建文件夹和操作文件很有诱惑力。 这是一个坏主意 - 不要那样做!
Unity为每个资源创建元数据。 在文件系统上创建,更改或删除资源可能会破坏此元数据和游戏。
创建以下文件夹:Animations, Materials, Prefabs, Presets, Scripts, 和 Textures
。
您的Project Browser
应如下所示:
![](https://img.haomeiwen.com/i3691932/2675a92ea4902117.png)
就个人而言,我发现大文件夹图标会分散注意力。 如果您还有首选项,则可以使用Project Browser
底部的滑块来增大或减小大小。
![](https://img.haomeiwen.com/i3691932/cb16457a478b9bf1.png)
注意:从现在开始,本教程中的所有屏幕截图都将显示最小的设置。
最后,您可能想要更改资源的名称。 例如,您当前的场景称为SampleScene
。 选择Scenes
文件夹,然后选择SampleScene
文件。 该名称将突出显示。 再单击一次,您将要写一个新名称。 将其更改为Main
。
![](https://img.haomeiwen.com/i3691932/6ef7e11a36bc4b66.png)
Importing Assets - 导入资源
现在您已经组织了文件夹,您已准备好为游戏导入资源。 首先,你将导入节目的明星:太空飞船。
打开资料的资源文件夹并查找三个文件:
- 1)
BobbleMarine-Head.fbx
- 2)
BobbleMarine-Body.fbx
- 3)
Bobble Wars Marine texture.psd
将这三个文件拖到Models
文件夹中。 不要复制BobbleWars.unitypackage
;那是后来的。
什么是
FBX
文件? FBX文件通常包含3D模型,但它们也可以包含纹理和动画。 3D程序(如Maya
和Blender
)允许您使用此文件格式导出模型以导入到Unity等程序中。
选择Models
文件夹,你会看到你有一堆新文件。 Unity为您导入并配置了模型。
![](https://img.haomeiwen.com/i3691932/e6c4aaa1f2a1a1ad.png)
为了保持整洁,将Bobble Wars Marine texture
从Models
文件夹移动到Textures
文件夹。 纹理是材料(Materials)
的基础。
你问什么材料? 材料根据照明条件为您的模型提供颜色和纹理。 材质使用所谓的着色器,最终决定屏幕上显示的内容。 着色器是用特定着色器语言编写的小程序,远远超出了本教程的范围。 您可以通过Unity附带的文档了解有关材料的更多信息。
切换回Models
文件夹并选择BobbleMarine-Body
。 Inspector
视图现在将显示特定于该模型的信息以及预览。
![](https://img.haomeiwen.com/i3691932/e22b4b277436403c.png)
如果您看不到预览,则其窗口将关闭。 在Inspector
的底部,找到一个灰色条,然后用鼠标向上拖动它以展开预览。
![](https://img.haomeiwen.com/i3691932/a3610691742a14f4.png)
Inspector
允许您更改模型的配置,并允许更改任何选定对象的属性。由于对象可能彼此差异很大,因此Inspector
将根据所选对象更改上下文。
1. Installing Blender - 安装Blender
此时,您已经为太空船舶导入了模型和纹理。模型采用FBX
格式,纹理采用.PSD
格式。
我们以.FBX
格式向您提供太空海洋模型,因为这是艺术家提供资源的流行格式。但是还有另一种流行的格式你应该理解如何使用:Blender
文件。
与.FBX
不同,Blender
文件包含源模型数据。这意味着您可以在Blender
中实际编辑这些文件,并且更改将立即在Unity
中生效,与.FBX
文件不同。
使用.FBX
,每次更改模型时都需要将模型导出并重新导入Unity。
所有这些美好功能都有一个小的权衡。要使Unity能够使用Blender
文件,您需要在计算机上安装Blender
。Blender
是免费的,你会很高兴知道你会用它来制作你自己的模型。
通过以下URL下载并安装Blender
:https://www.blender.org/download/
![](https://img.haomeiwen.com/i3691932/6196755730437b74.png)
注意:Blender快速发展,因此您在桌面上看到的版本可能与此屏幕截图不同。
安装Blender
后,运行该应用程序,然后退出。 就是这样 - 你现在可以在Unity中使用Blender文件了。
2. Importing Packages - 导入包
现在您已经安装了Blender
,现在可以导入其余的资源。
其余资源组合成一个名为Unity package
的单个包。 这是艺术家为Unity提供资源的常用方式,尤其是当他们从Unity store
购买时。
我们试着导入一个包。 选择Assets \ Import Package \ Custom Package ...
,导航到您的资源文件夹并选择BobbleheadWars.unitypackage
,然后单击Open
。
您将看到该软件包中包含的资产列表,默认情况下会选中所有这些资源。 请注意,其中一些是Blender
文件,但也有其他文件,如纹理和声音。 单击Import
按钮将它们导入Unity。
![](https://img.haomeiwen.com/i3691932/4c4813e5577ad49a.png)
导入将为项目添加一些额外的资源。 如果您收到警告,请暂时忽略。
为了保持整洁,单击新生成的Materials
文件夹(在Models文件夹中)并将其重命名为Models
。 将此新文件夹拖到父级Materials
文件夹中。
Adding Models to the Scene View - 将模型添加到场景视图
此时,您已将所有内容导入Unity。 是时候开始把你的游戏放在一起了,你可以通过将你的模型添加到场景视图(Scene view)
来开始它。
场景视图是游戏创建的地方。 它是一个3D窗口,您可以在其中放置,移动,缩放和旋转对象。
首先,确保选择Scene view
选项卡。 然后,在Project Browser
中,从Models
子文件夹中选择BobbleArena
并将其拖到Scene
视图中。
![](https://img.haomeiwen.com/i3691932/aeb0253f4a4d64fc.png)
在场景视图中查看区域:
![](https://img.haomeiwen.com/i3691932/239bb9c61d6e40c3.png)
很酷,嗯?
场景视图为您提供了一种在3D空间中导航游戏的方法:
- 右键单击并旋转鼠标以环顾四周。
- 按住鼠标右键并使用
WASD
键实际移动场景。 - 移动太慢了? 按住Shift键给它一些提升。
- 使用鼠标滚轮滚动进行缩放。
- 按下鼠标滚轮并将鼠标移动到平移。
默认情况下,视图以着色模式显示纹理。 您可以切换到其他查看模式,例如线框或阴影线框。
我们来试试吧。 在Scene tab
下,单击Shaded dropdown
,然后选择Wireframe
。 现在,您将看到没有任何纹理的所有网格,这在您通过眼睛放置网格时非常有用。
![](https://img.haomeiwen.com/i3691932/49a102b6e0fe0500.png)
将“场景”视图切换回Shaded textures
。
在“场景”视图中,您会注意到右下角的Gizmo
,其下方有Persp
一词。 这意味着Scene视图处于透视模式(perspective mode)
;离你越近的物体看起来比远离物体的物体大。
![](https://img.haomeiwen.com/i3691932/07bdfbdb4598d005.png)
单击彩色轴将改变您对场景的视角。 例如,单击绿色轴,“场景”视图将从y轴向下看。 在这种情况下,Persp
会读取Top
,因为您从这个角度看世界。
![](https://img.haomeiwen.com/i3691932/378fd871860a6c0b.png)
单击中心框将视图切换到Isometric mode
a.k.a.,正交模式。 从本质上讲,无论物体与您的距离如何,物体的大小都是相同的。
![](https://img.haomeiwen.com/i3691932/2968f32352ab118e.png)
要返回“透视”模式,只需再次单击中心框即可。
Adding the Hero - 添加英雄
在这一点上,你有竞技场设置,但它缺少荣誉嘉宾!
要解决此问题,请在项目浏览器中找到并打开Models
文件夹,然后将BobbleMarine-Body
拖到Hierarchy
视图中。
![](https://img.haomeiwen.com/i3691932/ee89a735a3cc8550.png)
在Unity中,游戏按场景组织。 现在,您可以将场景视为游戏关卡。 Hierarchy view
是场景中当前存在的所有对象的列表。
请注意,您的场景已包含多个对象。 此时,它包含您的竞技场,太空船和两个默认对象:主摄像头和定向灯。
在仍然选择了船体后,将鼠标悬停在“场景”视图上,然后按F
键缩放到飞船。 当场景中有许多对象并且需要快速访问其中一个对象时,此快捷方式非常有用。
![](https://img.haomeiwen.com/i3691932/3afd29698a324331.png)
如果你的太空船没有放在这个确切的位置,请不要担心。你稍后会解决这个问题。
您会注意到,当选择对象时,该对象周围会出现轮廓。 Unity偶尔会将所选对象的轮廓颜色根据不同版本而改变。
在Unity 2018
中,新项目有一个红色轮廓。这是由于编辑器的新默认颜色空间。色彩空间决定了引擎如何混合颜色。它还确定了您的游戏可以支持的设备和平台。默认情况下,色彩空间设置为Gamma
,但您可以将其切换为线性,用于新PC
,移动设备和当前控制台(PS4,Xbox One和Nintendo Switch)
。
目前,最好使用默认颜色设置,但您可以轻松地从红色切换到橙色。您可以随时通过选择Windows
上的Edit \ Preferences
或MacOS
上的Command-,
来更改颜色。在Preference
窗口中,选择Colors
,您将看到可以自定义的所有颜色的列表。要更改选择颜色,需要更改Selection Outline field
。
![](https://img.haomeiwen.com/i3691932/ab7380cc4a011974.png)
关键是选择颜色是装饰性的,而不是功能性的。 在本教程中,我们使用橙色选择颜色。
将BobbleMarine-Head
从Project Browser
拖到Hierarchy
中。头部不会完全按照你的意愿动。
![](https://img.haomeiwen.com/i3691932/260f36e009c80711.png)
在层次结构中选择头部以查看其导航Gizmo
。 通过选择并拖动彩色箭头,您可以向各个方向移动头部。
![](https://img.haomeiwen.com/i3691932/cbecdb719948acbf.png)
头部中间的立方体的彩色面允许您同时沿两个轴移动对象。 例如,选择并拖动红色面 - x轴 - 允许您沿y轴和z轴移动头部。
您可以使用工具栏对对象进行其他调整。
第一项是手形工具。 这允许您平移场景,相当于按住鼠标中键。
![](https://img.haomeiwen.com/i3691932/fa224493d9eac21a.png)
选择位置工具以查看允许您重新定位所选对象的位置Gizmo
。
![](https://img.haomeiwen.com/i3691932/b7b4d8b82d188437.png)
使用旋转工具旋转所选对象。
![](https://img.haomeiwen.com/i3691932/739d33c8e145f957.png)
缩放工具允许您增加和减小对象的大小。
![](https://img.haomeiwen.com/i3691932/ce6cf52d8b423b49.png)
rect工具可让您旋转,缩放和重新定位精灵。 在使用用户界面和Unity 2D时,您将使用它。
![](https://img.haomeiwen.com/i3691932/fa28ac90e297e9de.png)
Unity 2018的新变换工具将移动,旋转和缩放工具组合成一个瑞士军刀。 这个工具是您提供所有对象转换的一站式商店。
![](https://img.haomeiwen.com/i3691932/ceac1a7135f06641.png)
使用上述工具,调整头盔的位置,使其位于英雄的脖子上。 此外,看看你是否可以移动太空船,以便他在竞技场中居中。 在本系列的下一个教程中,您将使用Inspector
精确定位这些内容。 完成后,飞船应该是这样的:
![](https://img.haomeiwen.com/i3691932/f42da1818c12fc92.png)
定位太空宇航员的头部后,选择File \ Save Scene as ....
,Unity将为您提供保存对话框。 将场景命名为Main
,完成创建后将文件拖到Scenes
文件夹。
注意:Unity不会自动保存,不幸的是有时可能会有点“崩溃”。 确保尽早并经常保存。 否则,你将失去工作(可能还有你的理智)。
恭喜! 你现在有一个太空船准备杀死所有的外星怪物,你已经学到了很多关于Unity用户界面和沿途导入资源的知识。
具体来说,在本教程中您学到了:
- 如何配置Unity布局,包括为特定任务自定义它。
- 如何导入资源并在Unity中组织它们。
- 如何将资源添加到场景并手动定位它们。
在即将到来的本系列第二个教程中,外星人将最终赶上太空船 - 你将会了解GameObjects
和Prefabs
!
后记
本篇主要讲述了一款简单射击游戏示例,感兴趣的给个赞或者关注~~~
![](https://img.haomeiwen.com/i3691932/5bf40a31a8f4b9d7.png)