「Unity2D」使用Unity创建一个2D游戏系列-2

本文由泰然教程组成员 betterdenger 翻译,原文请参阅「Adding and displaying a background」

添加并显示背景

本章我们使用在上一章节创建的空项目, 我们要学习如何添加一个背景以及一些云彩。

添加背景

首先添加一个静态的背景,我们用下面这张图:

background

(右键保存本图)

从"Textures"文件夹导入图片。简单的把文件拷贝进去或者从文件窗口拖过去。

现在先不管导入设置。

在Unity场景里创建一个新的Sprite游戏对象。

New sprite

什么是sprite

通常我们在2D动画游戏里面把一个显示的图像叫做"sprite"。这里,sprite特指的是Unity里一个2D游戏对象。

给sprite添加纹理

Unity可能已经自动设置你的背景作为一个sprite显示。如果没有的话,或者你想改变纹理,跳转到inspector里选中"background":

Select a sprite

(你需要点击输入框右边的小圆圈按钮来显示"Select Sprite" inspector)

"我的sprite没用出现在对话框里?": 首先,确认你处于"Select Sprite"对话框的"Assets"选项卡里。 有读者说,在他们的项目里,这个对话框是空的。原因是对于有些Unity安装,即使是一个全新的2D项目,图片都是作为"Texture"导入而不是"Sprite".

要解决这个问题,你需要在"Project"面板里选中图片,然后在"Inspector"里改变"Texture Type"属性为"Sprite":

Sprite mode

我们也搞不明白为什么会出现这种不一致的情况

好了,现在我们现在设置了一张蓝天白云背景图作为一个sprite。开始重新组织场景。

在"Hierarchy"面板里, 悬着New Sprite。把名字改成Background1或者其他一些简单容易记住的命令。

接着把这个对象移动到对应的位置: Level -> 0 - Background。改变位置到(0, 0, 0).

Background is set

把背景图复制一个放到(20, 0, 0),你会发现它会跟第一章完美重叠。

提示: 你可以通过cmd + D(OS X)或者ctrl + D(Windows)快捷键复制一个对象。

Background2 in place

添加背景元素

这些元素也被称为道具,他们不是用来提高游戏性,而是为了增强场景的视觉效果。

这里有些简单的处于飞行状态的圆台sprite:

Platform sprites

(右键保存本图)

如你所见,图片文件里有两个“飞台”。通过这个,我们可以学到怎样通过新的Unity工具剪裁sprite。

从一个图片文件里生成两个sprite

  1. 导入"Textures"文件夹里面的图片
  2. 选择"platforms" sprite,跳转到inspector
  3. 修改"Sprite Mode" 为 "Multiple"
  4. 点击"Sprite Editor"

Multiple sprites

在新窗口"Sprite Editor", 你可以在每个“飞台”圈出一个矩形框, 然后把选取图片纹理切割成一个小块:

Sprite Editor

左上角的"Slice"的按钮可以帮助你快读自动的完成这个单调的过程:

Automatic slicing

Unity会自动识别并分割出图片里的对象。你可以指定默认的中心点,或者设置切割的最小尺。对于一个简单的图片,它是非常高效的。当然你使用这个工具的时候,一定要小心检查生成的结果和你预想的是一致的。

对于本教程,我们先手动操作。把“飞台”命名为"platform1"和"platform2"。

现在你在图片文件下面可以看到两个分开的sprite:

Sprite Editor result

把它们添加到场景里去

跟处理背景sprite一样处理这个两个: 创建一个新的sprite,选择"platform1" sprite。同样的过程操作"platform2".

把它们放到1 - Middleground对象里。同时再次确认z坐标被设置为0了。

Two shiny new platforms

好的,接下来...哦,已经好了。吓死宝宝了,这太简单了(坦白讲,如果没有这些2D工具我们做这些可没那么容易,包括刚才提到的图片拼接)。

Prefab

把这些“飞台”当成prefab保存。只需要把它们拖拽到"Project"面板下的"Prefabs"文件夹里:

Prefabs

这样,你就基于原来的游戏对象创建了一个Prefab。你可以注意到被转换成prefab的游戏对象在它名字下生成了一行新的按钮:

Prefab connection

注意这些"Prefab"按钮: 如果你之后修改了游戏对象,你可以通过"Apply"按钮来同步这个修改,或者通过"Revert"按钮来根据prefab的属性回滚游戏对象(取消对游戏对象的一切修改,让它回到保存prefab的状态). "Select"按钮会把你当前所选直接移动到prefab工程视图(会被高亮显示).

通过把这些“飞台”保存为prefab可以让他们被轻易复用。仅仅是拖拽这些Prefab到场景里就创建了这个游戏对象的副本。

你现在要添加更多的飞台,改变它们的位置,大小,和层面(作为前景或者背景, 只需要保证平面的Z轴值为0).

看起来场面还是不够酷炫,但是在两章里我们会通过视差滚动让整个场景鲜活起来。

Layers

在进一步之前,我们需要修改我们的自制layer来避免显示层次顺序问题。

在你的"Hierarchy"试图里简单的改变Z轴的值,如下表格所示:

Layer Z Position
0 - Background 10
1 - Middleground 5
2 - Foreground 0

如果你在"Scene"试图里面切换2D和3D显示视图,你会清楚的看见layer长成什么样:

Layers in 3D view

摄像机和灯光

在上个版本的教程里(Unity 4.2), 我们有详尽的解释怎样为2D游戏设置摄像机和灯光。

好消息是这些东西现在完全没用了,你啥都不需要做了。

旁白: 如果你点开Main Camera游戏对象, 你可以看到"Orthographic"已经设置有一个"Projection"标帜。这个设置允许摄像机渲染2D游戏而不需要考虑3D游戏。请记住,虽然你操作的是2D对象,但是Unity依然用的是3D引擎来渲染场景。上面的gif图展示了这一特点。

下一步

你刚才已经学习到了怎样创建一个简单的静态背景以及正确的把它们展示出来。接着,我们教你怎样从图片里弄出sprite。

在下一章,我们会学习如何添加一个玩家和它的敌人们。

标签: none

?>