Unity 是一款非常流行且用途广泛的游戏引擎,拥有一长串受支持的平台和设备。3D 游戏可能是您谈到 Unity 时的第一个想法。该引擎甚至曾经被称为Unity 3D!但是,大部分移动、主机和桌面游戏都是以 2D 形式呈现的,因此了解 Unity 为构建 2D 游戏提供的功能非常重要。
在本教程中,您将构建一个 2D 太空着陆器游戏,并在此过程中学习以下技能:
- 如何使用精灵和相机。
- 所有关于_物理2D_组件以及如何处理碰撞和游戏玩法。
- 如何设置 2D 动画和状态。
- 图层和精灵排序如何影响 2D 游戏。
本教程的材料是在 Unity 版本 2020.3 中构建的。
开始
打开场景文件夹中的Lander场景。您应该在_“游戏_”视图中看到类似于以下的内容:
由于精灵排序,您可能不会看到完全相同的图片,本教程稍后将对此进行说明。入门项目是一款功能性的 2D 太空着陆器游戏,但它有一些问题你需要解决才能真正完成。
准备好升空并前往最近的着陆台进行危险的旅程了吗?是时候开始了!
注意:Unity 中的 2D 游戏 — 非常合乎逻辑 — 使用 Unity 编辑器的 2D 模式。从头开始创建项目时,可以选择 2D 或 3D 模式。此选项已在初学者项目中为您设置。
Unity中的精灵
在高层次上,_精灵_只是 2D 图形对象。它们本质上是您通常用于 3D 对象的标准纹理。但是,Unity 具有用于组合和管理这些精灵纹理的特殊技术,以便在您的游戏中获得超高效的性能,以及方便的开发体验。
简而言之,精灵在 Unity 中易于使用,这要归功于出色的 2D 工作流程和内置编辑器。
要将精灵添加到游戏中,请将其从_Project _文件夹拖放到 Scene 视图中。若要亲自了解该过程的简单程度,请先选择“Scene _”视图。然后,将_玩家_精灵从“精灵”文件夹拖到_Scene _视图中:
在层次结构中,单击 Unity 为您创建的_Player_,然后在检查器中查看其详细信息。请注意,Unity 自动将包含玩家精灵的精_灵渲染器_组件附加到游戏对象:
这就是它所需要的!_精灵渲染器_允许您在 2D 和 3D 场景中将图像显示为精灵。
现在,从层次结构中删除_Player_。
精灵模式
单击_“Assets / Sprites”文件夹中的精灵。在检查器中,有三种不同的模式可以使用精灵:
- Single:单_图像精灵。
- Multiple:具有多个元素(如动画)的精灵,或具有角色不同部分的精灵表。
- Polygon:一种自定义多边形形状的精灵,您可以使用它创建许多不同类型的基元形状。示例:三角形、正方形、五边形、六边形。
精灵表(图集)是包含许多较小的单个图像的单个图像,如下所示:
使用精灵表的原因是,您在游戏中使用的每个图像都将占用一次绘制调用。对于几十个精灵来说,这没什么大不了的,但随着游戏复杂性和范围的增长,这可能是一个潜在的问题。
通过使用精灵表,您可以对大量精灵进行一次绘制调用,从而为您的游戏提供性能提升。当然,精灵表的组织与使用它们一样重要,但这是另一个教程!
精灵编辑
将多个图形元素打包到单个图像中对于具有许多移动部件的动画或对象非常方便;Unity 使用内置的 2D 精灵表编辑器(2D sprite editor)可以轻松管理这些精灵表。
您将在此游戏中使用两个精灵表:一个用于着陆器的推进器动画,另一个用于爆炸动画。这两个动画都由多个帧组成,您可以使用 _精灵编辑器_对其进行编辑和切片。
Assets/Sprites/Explosion/explosion-spritesheet.png已经为您切片并准备成动画,但Assets/Sprites/thruster-spritesheet.png仍然需要注意。
切片精灵表
点击项目窗口中的_Assets/Sprites/thruster-spritesheet.png_。在检查器中,Sprite mode已经设置为_Multiple(如果没有,更改它,然后单击_Apply_)。
接下来,点击_Sprite editor:
在较新版本的 Unity 中,默认情况下不安装_精灵编辑器_;它已移动到包系统中,需要添加。
此警告在您首次尝试打开精灵编辑器时出现。
转到_Window ▸ Package Manager_。从_“Packages ”下拉列表中选择“Unity Registry”,然后找到“2D Sprite”。单击“安装_”将工具添加到项目中。
返回 thruster-spritesheet.png再次单击_精灵编辑器_。弹出一个新窗口,显示自动切成单个帧的精灵表(添加数字是为了说明目的,不是屏幕截图的一部分):
单击窗口左上角的_切片_,_注意自动是_默认切片操作:
这意味着 Unity 将尝试尽其所能自行定位和切片您的精灵表。在这种情况下,它可以正常工作,但您也可以按单元格_大小_或_单元格计数_对精灵表进行切片。
自定义切片
通过选择单元格大小选项,您可以使用像素尺寸指定精灵表中每个帧的大小。
点击精_灵编辑器_中切片菜单下的_按__单元格大小网格_:
在_像素大小下_,为 X 输入 9,为 Y 输入 32。将其他值保留为 0,并将“透视”设置为“居中”。然后,单击_切片_:
点击精_灵编辑器_窗口中_的应用_,应用更改:
大功告成!您的推进器精灵表现在可以使用了,您可以关闭关闭精灵编辑器。
将精灵分配给着陆器
现在,你实际上无法_在游戏中看到_着陆器。那是因为它没有附加任何精灵渲染器组件。不会有任何壮观的着陆 - 或坠毁!– 如果着陆器在屏幕上不可见。
要解决此问题,请单击层次结构中的_着陆器_游戏对象。在检查器中,单击“添加组件”,然后在搜索文本栏中键入_Sprite Renderer_”。最后,选择精灵渲染器_组件。
现在,点击组件属性中精灵字段旁边的小圆圈图标,选择_playership 精灵_:
将_图层中的顺序_设置为 1。稍后会详细介绍!
你的下一个工作是分配起落架精灵。
单击位于_着陆器_游戏对象下的 LanderFeet 游戏对象。然后,单击“精灵渲染器”组件属性中“精灵”字段旁边的小圆圈图标。最后,在“选择精灵”窗口中选择_着陆脚_精_灵_,如下所示:
单击_播放_;您将能够在游戏视图中看到您的着陆器。使用 WASD 或_箭头键_在屏幕上飞来飞去:
我们升空了!
如果你的着陆器被一种看不见的力量阻止,你可能试图飞过一颗你看不见的小行星,因为前面提到的精灵分类问题。现在,继续探索你可以到达(和看到)的宇宙部分。:]
每单位的 2D 摄像头和像素数
默认情况下,Unity 2D 项目具有_正交_摄像机视图。通常,您需要在 2D 游戏中坚持这一点,而不是使用_透视_摄像机视图。您可以在 Unity 教程简介的第二部分中详细了解它们之间的差异。
下图显示了场景主摄像机的默认_摄像机_配置:
如上所述,“投影”属性设置为_“正交”。_
在“项目”窗口中选择_玩家_角色,然后在检查器中查看其_导入设置_。_“每单位像素数”_属性当前设置为默认值 100:
所以。。。在这种情况下,100 是什么意思?
关于每单位像素数的字词
Unity 中的单位不一定对应于屏幕上的实际像素。相反,您通常会以某种任意比例(例如 1 单位 = 1 米)相对调整对象的大小。对于精灵,Unity 使用_每单位像素数_来确定其未缩放大小(以单位为单位)。
考虑从 500 像素宽的图像导入的精灵。下表显示了当您使用不同比例的每单位像素值渲染精灵时,x 轴上游戏对象的宽度将如何变化:
还是不太清楚?以下方案将帮助您了解单位转换的情况。
考虑一个使用静态相机并全屏显示背景精灵的游戏,类似于计算机桌面上的壁纸。
Assets/Sprites/backdrop.png 高度为 2048 像素,默认每单位像素比率为 100。如果您进行数学计算,您会发现层次结构中的_背景游戏_对象将达到 20.48 个单位高。
但是,正交摄像机的大小属性仅测量屏幕高度的_一半_,因此,要在全视图中将_背景游戏_对象的确切高度与屏幕配合,应使用 10.24 的正交大小:
但是,您不需要更改项目中的摄像机,因为当前大小 5 适用于游戏中的移动摄像机。
令人骄傲的银河
精灵的_“导入设置_”的“最大大小”属性允许您定义精灵的最大_大小_(以像素为单位)。您可以为计划定位的每个平台覆盖此设置。
放大浅蓝色星系上的场景视图背景。请注意,它略微模糊;导入精灵时,“最大大小”属性默认为 2048。Unity 必须缩小图像以适应默认纹理大小,从而导致图像质量下降。
要清除图像问题,请在“项目”窗口中选择_背景子_画面。然后,在“检查器”窗口中,选择_“覆盖 PC、Mac 和 Linux 独立设置_”(看起来像电脑显示器的选项卡)。
接下来,选中 PC、Mac 和 Linux 独立覆盖,并将_最大大小_更改为 4096。单击_应用_,然后等待片刻,Unity 再次导入场景视图的背景。你会看到背景突然变得清晰起来:
将“最大大小”设置为 4096 可让 Unity 使用完整的 4096 x 4096 纹理,以便您可以看到原始图像中的细节。
尺寸增加
但是,这种保真度是有代价的。检查检查器的预览区域如下所示;背景纹理的大小现在为 4.0 MB,高于之前的 1.0 MB:
增加纹理的大小会将其内存占用量增加 4 倍。
还值得一提的是,Unity 支持针对其他平台进行构建,有一些覆盖设置。如果您计划为其他平台构建游戏并希望为它们设置不同的大小和格式设置,则可以使用这些覆盖设置。
注意:4096 x 4096是一个相当大的图像文件;尽量避免使用此尺寸,_尤其是_对于手机游戏。本项目仅使用大图像作为示例。
纹理
您还可以更改纹理的_格式_,如下所示:
您可能希望调整某些纹理的格式以提高其质量或减小其大小,但这会增加图像的内存占用量,或者降低纹理保真度。调整这些设置的最佳方法是研究每个设置的工作原理,测试它们并比较结果纹理的质量和大小。
使用“紧缩”格式可以设置_紧缩_质量滑块值。50% 的紧缩值需要很长时间才能压缩,但它为您提供了尽可能小的文件大小,您可以进一步调整。
将背景导入设置回使用“格式”和“压缩器质量”设置之前的状态。然后,单击_应用_。
在开发自己的游戏时,您需要使用压缩设置来找到组合,从而产生最小的纹理大小,同时仍能为您提供所需的质量。
搜索关注公众号“unity小游戏工坊”回复“002”获取本教程的材料
未完待续…