这是用户在 2025-8-3 13:24 为 https://learn.unity.com/tutorial/zhuang-shi-shi-jie?uv=2020.3&projectId=5facf921edbc2a2003a58d3a# 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?
Unity Learn 主页
查看教程内容

装饰世界

教程
初级
1 小时
(995)
摘要
你现在已经创建了一个可供角色活动的基础世界,接下来便可以添加一些游戏对象来装饰这个世界。在本教程中,你将:
  • 装饰你创建的世界
  • 自定义 Unity 渲染精灵的方式
  • 使用预制件来复用游戏对象
选择 Unity 版本
最后更新:2021 四月 12
2020.3
2020.2
2020.1
2019.4
2019.3
2019.2
2019.1
2018.4
2018.3
语言
中文

1.添加装饰

首先,向你创建的世界添加一些装饰:
1.Project 窗口中,选择 Assets > Art > Sprites > Environment。选择 MetalCube 精灵
2.MetalCube 拖到 Hierarchy 窗口 以将其添加到场景中。
3. 使用移动工具(快捷键:w),将 MetalCube 置于场景中所需的位置。
4.Ctrl + S (Windows/Linux) 或 Cmd + S (macOS) 来保存更改。
5.单击 Play 以进入运行模式,并围绕着立方体移动你的角色!
选择要展开的图像
输入图像描述 (可选)

此时,Ruby 不会碰到金属立方体,而是从中穿过。她总是在立方体的上方或后面(取决于最先绘制的是哪个游戏对象)。
你将在下一教程中添加碰撞;现在,让我们关注如何解决游戏对象的排序问题。

2.如何才能解决排序问题?

你先前通过调整瓦片的 Order in Layer 属性来解决了瓦片地图的排序问题,但此方法在这里不合适,因为你并非总是希望一个游戏对象在另一个游戏对象之上。你需要“伪造”透视图。根据直觉,玩家希望角色在立方体前面时首先绘制角色,而角色在立方体后面时最后绘制角色。
如果用更技术性的语言来说,你需要做的是指示 Unity 根据游戏对象的 y 坐标来绘制游戏对象(请记住,y 是垂直轴,x 是水平轴)。
屏幕上位置较低的游戏对象y 坐标较小)应在屏幕上位置较高的游戏对象y 坐标较大)之后绘制。这样将使位置较低的对象显示在上层。

3.更改图形设置

要指示 Unity 根据游戏对象的 y 坐标来绘制游戏对象,请执行以下操作:
1.选择 Edit > Project Settings2. 在左侧类别菜单中,单击 Graphics3.Camera Settings 中,找到 Transparency Sort Mode 字段。此字段决定了精灵的绘制顺序。使用下拉菜单将此设置从 Default 更改为 Custom Axis
选择要展开的图像
输入图像描述 (可选)


4.Transparency Sort Axis 中添加以下坐标:
  • x = 0
  • y = 1
  • z = 0
此设置告诉 Unityy 轴上基于精灵的位置来绘制精灵5.关闭 Project Settings 窗口并保存你的更改。 6.Play 以进入运行模式并测试你的更改。现在,你的角色比箱子高时,角色应该会绘制在箱子的后面;而角色比箱子低时,绘制在箱子的前面。 这只是一个开始,但并不完美,因为在箱子后面(而不是前面)绘制 Ruby 的时机似乎过早。为此解决此问题,你需要调整 Sprite Renderer 组件。

4.调整精灵设置

让我们来看看 Ruby 的 Sprite Renderer
1.Hierarchy 中,选择 Ruby 游戏对象
2.Inspector 中,找到该游戏对象的 Sprite Renderer 组件。
3. 找到 Sprite Sort Point 字段。目前,此字段设置为 Center,这意味着会使用精灵的中心点来决定这个游戏对象应该在另一个游戏对象的前面还是后面。 4.Sprite Sort Point 更改为 Pivot
选择要展开的图像
输入图像描述 (可选)


5.调整单个精灵轴心

轴心是你可以手动定义的特殊点,充当精灵的“锚点”。如果你旋转精灵,精灵将围绕这个点旋转。这个点也是用于放置精灵的点。这意味着,如果游戏对象位于 (0,0),并且将 Pivot 设置为角色的头部,则会在 (0,0) 绘制头部。如果轴心在双脚上,则会在 (0,0) 绘制双脚。 你需要更改 RubyMetalCube 精灵的轴心,以便将精灵放置在所需的位置。 要更改单个精灵轴心,请执行以下操作: 1.Project 窗口中,选择 Assets > Art > Sprites > Environment。选择 MetalCube 精灵。 2.在 Inspector 中,找到 Pivot 字段。使用下拉菜单将此字段设置为 Bottom
选择要展开的图像
输入图像描述 (可选)

3.单击 Inspector 底部的 Apply 按钮。 这样就会将轴心置于精灵的底部,而不是先前的中部。

6.使用 Sprite Editor 来更改轴心

你刚才遵循的流程仅对单个精灵有效,例如,无法用于更改瓦片集轴心。 更改轴心的另一种方法是使用 Sprite Editor1.Project 窗口中,选择 Assets > Art > Sprites。选择 Ruby 精灵
2.Inspector 中,单击 Sprite Editor 按钮。此时将打开你在先前教程中使用的 Sprite Editor3. 单击图像以显示精灵边框。你应该会在中心看到一个小的蓝色圆圈。这是轴心的当前位置。
选择要展开的图像
输入图像描述 (可选)

Sprite Editor 允许你将此蓝色圆圈拖放到精灵中任何所需的位置。
或者,在灰色的 Sprite 窗口中,你可以:
  • Pivot 下拉选单中设置为 Center
  • Pivot 设置为 Custom 并手动设置 Custom Pivot
4.Custom Pivot 设置为 0.5(x 轴)和 0(y 轴)。由于 Pivot Unit Mode 设置为 Normalized,0 是最小值(因此,x 为左侧,y 为底部),1 是最大值(x 为右侧,y 为顶部),0.5 位于中间。
5.单击 Apply 以保存你的更改。 6.单击 Play 以进入运行模式,然后试玩游戏。现在,一切都应该可以正确显示!

7.什么是预制件?

现在,你已经更改许多设置,并需要为我们在场景中放置的每个新金属箱精灵都执行这些设置。
为避免这种重复操作,你可以在 Hierarchy 中复制并粘贴金属箱,然后将这个金属箱复制到场景中。但是此方法会导致两个问题:
  • 如果你意识到要进行某种更改(例如,恢复使用中心进行排序),则需要为复制的每个游戏对象更改该设置。这种情况下可能会加重问题!
  • 如果你要在其他场景中复用具有这些设置的箱子,则每次都需要重新打开包含此箱子的场景来复制箱子。
为了便于在多个游戏对象之间更改设置以及避免发生上述问题,Unity 使用预制件。一个预制件可以将一个游戏对象及其所有组件和设置纳入到一个资源中(就像精灵一样)。

8.创建预制件

要创建新的预制件,请执行以下操作:
1.Project 窗口中,找到顶级文件夹 (Assets)。 2.创建新文件夹并将其命名为“Prefabs”。 3.MetalBox 游戏对象Hierarchy 拖到新的 Prefab 文件夹中。
选择要展开的图像
输入图像描述 (可选)

4.现在,就像精灵一样,你可以将此游戏对象从 Project 窗口拖入 HierarchyScene 视图以创建具有完全相同设置的新游戏对象
你可以使用此过程来创建预制件,从而在项目的任何场景中复用游戏对象。现在,如何修改设置呢?

9.调整预制件设置

Hierarchy 中,你会看到 MetalBox 游戏对象现在是蓝色,旁边有一个蓝色立方体,右边有一个小箭头:
选择要展开的图像
输入图像描述 (可选)

这意味着这些游戏对象来自预制件,并且已“链接”到相应的预制件,因此对预制件所做的任何更改都将应用于这些游戏对象。
让我们从更改预制件的颜色开始: 1.Project 窗口中,双击 MetalBox 预制件。或者,选择预制件,然后在 Inspector 中单击 Open Prefab。你会发现 Scene 视图Hierarchy 现在仅包含金属箱。这是预制件模式2.在 Inspector 中,找到 SpriteRenderer 组件中的 Color 字段。单击此字段,更改为其他颜色(例如,红色)。
3.现在,你应该会看到 Scene 视图右上方的 Save 按钮不再灰显。这意味着你已经更改预制件,并且需要保存更改,因此请单击 Save 按钮
注意:默认情况下已启用 Auto Save 按钮。这将确保你会自动保存执行的所有更改,如果未启用该功能,则必须按照上述说明来手动保存。 4.Scene 视图中,单击 Scenes 导航路径以返回到所编辑的场景。或者,也可以单击 Hierarchy 中的箭头,沿着导航路径返回。
选择要展开的图像
输入图像描述 (可选)

5.观察场景中的所有箱子现在应该都会变成红色!
使用预制件就是这么简单!你以后会大量使用预制件,因为通过预制件可以返回并更改游戏对象上的某些设置,而不必手动更改放置在场景中的游戏对象的所有实例。
例如,在下一教程中,你将向箱子预制件添加碰撞,使场景中的任何箱子都能与角色碰撞。

10.创意时刻

现在,你可以向游戏中添加自己的装饰!在 Art > Sprites > Environment 文件夹中,你会发现有很多项,例如房屋、树木和渠盖 (DrainCover)。 可以像导入箱子一样导入这些项。注意:
  • 轴心移到底部。
  • 调整 PPU 值,按需进行缩放。
  • 游戏对象创建预制件,然后使用该预制件将其他实例放置在场景中。
你也可以尝试这些项的 Order in Layer 设置,因为你可能希望某些项始终出现在角色后面(例如渠盖)。

11.总结

现在,你已经学习了如何更改游戏对象的绘制顺序,以及如何从这些游戏对象创建预制件
预制件Unity 中非常重要的概念,从现在开始你将大量使用预制件。在继续学习下一教程之前,你可以在场景中练习创建一些预制件并进行修改! 在下一教程中,你将学习如何使用碰撞和物理系统 (Physics System) 来阻止角色穿过箱子和水上行走。

项目:
Ruby's Adventure:2D 初学者
装饰世界
装饰世界
一般教程讨论
0
0
1. 添加装饰
0
0
2. 如何才能解决排序问题?
0
1
3. 更改图形设置
0
0
4. 调整精灵设置
1
2
5. 调整单个精灵轴心
0
0
6. 使用 Sprite Editor 来更改轴心
0
0
7. 什么是预制件?
0
0
8. 创建预制件
0
0
9. 调整预制件设置
0
0
10. 创意时刻
2
2
11. 总结
0
0