使用在之前章节里,我们创建的空项目,现在我们将学习如果添加背景和一些华丽的云。
你的第一个背景将是静态的,我们将使用下面的图片:
(右键点击保存)
将它导入到"sprites"文件夹里,简单复制进去,或是拖放进去。
现在不要担心导入设置。
在Unity里,创建一个新的Sprite
游戏对象到场景里。
通常来说,我们把视频游戏里的一个2D图片叫做"sprite" (精灵),这里是Unity 2D游戏一个明确的对象。
我们将选择一个实际的精灵来显示,确保"New Sprite"是选中的状态,看"Inspector"面板,将"background"图片添加到Sprite属性里:
(你需要点击输入框右侧的圆形小图标,打开"Select Sprite"检视器)
你可以看到一些别的精灵也在这里,那是uGUI的默认图片 (Unity UI 系统)
我的sprite没有显示在对话框里?:首先,确保你在"Select Sprite"的"Assets"标签里。
一些读者报告说,在他们的项目里,这个对话框是空的,原因是一些安装的Unity,即使是创建一个新的2D项目,图片导入是以"Texture"类型,而不是"Sprite"。
要修正这个,你需要在"Project"面板里选中图片,然后在"Inspector"面板里,改变"Texture Type"属性为"Sprite":
我们不清楚为什么每个人看到的情况有点不同。
好了,我们设置了一个简单的精灵,用来当做有云的天空背景,你可以认为这有点点复杂,事实上,我们可以直接将精灵从"Project"标签里拖到场景里。
让我们来整理一下这个场景。
在"Hierarchy"面板里,选择New Sprite
,重命名为Background1
或是你比较容易记的名字。
接着将它移动到Level -> Background
下,改变它的坐标为(0, 0, 0)
一个快速练习:复制背景,粘贴到坐标(20, 0, 0)
的位置,它将把第一部分填充得非常完美。
小巧门:你可以使用
cmd + D
(OS X)或ctrl + D
(Windows)快捷键复制一个对象
下一个陈述似乎很显示,但它有一个后果:我们正展示一个2D世界。
这意味着所有的图片都在同一个深度,0
,你呢 (以及图像引擎),完全不知道谁会被第一个显示。
精灵层允许我们告诉Unity,哪些在前面,哪些在后面。
在Unity里,我们可以改变元素的"Z"值,这将使我们拥有层,这实际上是本教程在Unity 5之前的做法。
但是我们认为使用精灵层是一个好注意。
在我们的"Sprite Renderer"组件里,有一项叫做"Sorting Layer",现在值为Default
。
如果你点击它,一个短列表会显示出来:
让我们添加我们需要的层进去 (使用"+"按钮):
将Background
层设置给背景精灵:
小巧门:设置项"Order in Layer"是一种限制子图层的方法,拥有较小数字的精灵在拥有较大数字的精灵之前显示。
注:"Default"层是无法被删除的,因为它是用于3D元素的,你可以在2D游戏里拥有3D对象,Unity将粒子就视为3D对象,所以它们将被显示在这一层
如果道具,这些元素不会用于提升游戏玩法,但可以显著的加强场景。
这里有一些简单的飞行平台精灵:
(右键点击保存)
如你所见,在一个文件里,有两个平台,这是一个学习如何使用Unity工作切割精灵的好方法。
- 导入图片到"sprites"文件夹
- 选中"platforms" 精灵,打开"Inspector"
- 改变"Sprite Mode"为"Multiple"
- 点击"Sprite Editor"按钮
在新的窗口("Sprite Editor"),你可以在绕着每个平台画一个矩形,来将纹理切成更小的部分:
将它们分别命名为"platform1"和"platform2"。
小巧门:左上角的按钮"Slice"可以快速自动的完成这个沉闷的任务。
Unity会在图片里找到对象进行自动的分片,你可以指定默认的轴心,或是设置切片的最小尺寸。对于没有失真的简单图片,它真的非常有效率。然而,如果你使用了这个工具,小心,检查结果是不是你想要的。
现在,下面的图片文件,你可以看到已经分离成了两个精灵:
我们将像背景精灵一样处理:创建一个新的Sprite
,选择"platform1"精灵(或者把它们一个一个的拖到"Project"的"Scene"标签里),重复"platform2"。
设置它们的"Sprite Layer"为"Platforms"。
把它们放到Middleground
对象里。
成啦!我仍然不敢相信如此之简单(诚实的说,如果没有2D工具,涉及四边形和图像的平铺,不是一件容易的事)
将这些平台保存成为预制件,只需要拖放它们到"Prefabs"文件夹里
这样子,你将完全基于原始的游戏对象制作Prefab
,你可能注意到,被你转为Prefab
的游戏对象,现在在它的名称下面多了一行按钮:
"Prefab"按钮:如果你在后面修改了游戏对象,你可以"Apply"它的改变到
Prefab
里,或者"撤回"它(取消所有在游戏对象上的改变),"Select"按钮可以将你的选择直接移动到"Project"视图中的资源里 (它会突出显示)。
使用platform对象创建预制件将会在后面重用,让创建它们变得容易。简单的拖放Prefab
到场景里就可以添加一个拷贝,试试这个方法去添加另一个platform。
你现在可以添加更多的platform了,修改它们的位置,缩放和平面。
你可以放一些到background里也可以添加到foreground里,记住,"Background", "Middleground", "Foreground"对象都是文件夹,所以,你需要设置正确的"Sprite Layer" (Platforms),修改"Order in Layer"。
使用-10
给较远的platform,加大数字给较近的,举个列子:
这样不是非常的时髦,但在下两张,我们将添加视差滚动,它会一下子让场景变得生动起来。
那么,在本教程之前的版本 (Unity 4.2),我们有很长且细致的解释了在2D游戏里如何设置镜头和光。
好消息是,现在不必要了,你不用做任何事情,它已经在工作了。
旁白:如果你点击
Main Camera
游戏对象,你可以看到,它的"Projection"标志设置为"Orthographic",这是允许镜头在不考虑3D的情况下渲染2D游戏的设置。记住,即使你使用的是2D对象,Unity仍然3D引擎来渲染场景,上面的Gif很好的展示了这一点
你已经学习了如何创建一个简单的静态背景,如何正确的显示它,接着,我们又告诉你如何使用图片制作简单的精灵。
在下一章里,我们会学习如果添加player和它的enemies。