问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Unity 技巧:2D 制作中物体层级的深入解析与修改方法

创作时间:
作者:
@小白创作中心

Unity 技巧:2D 制作中物体层级的深入解析与修改方法

引用
CSDN
1.
https://blog.csdn.net/MY_future_/article/details/146016228

一、引言

在 Unity 2023 进行 2D 游戏制作时,物体层级的管理是一个至关重要的环节。合理地设置物体层级能够确保游戏画面的正确显示,避免出现遮挡关系混乱等问题,从而提升游戏的视觉效果和用户体验。本文将深入探讨 Unity 2023 2D 制作中物体层级的相关知识,并详细介绍多种修改物体层级的方法,同时分析每种方法的优缺点及适用场景。

二、Unity 2023 中 2D 物体层级的概念

(一)层级的基本含义

在 Unity 的 2D 场景中,物体层级决定了物体在屏幕上的显示顺序层级数值较高的物体通常会显示在层级数值较低的物体之上。这类似于现实世界中的遮挡关系,比如前景的物体遮挡背景的物体。

(二)层级的作用

  1. 控制显示顺序通过调整物体层级,可以精确控制哪些物体显示在前面,哪些显示在后面。例如,在一个 2D 横版过关游戏中,玩家角色需要始终显示在背景元素之上,但在一些特效(如技能特效)之下,这就需要合理设置层级来实现。

  2. 优化渲染效率正确的层级设置有助于 Unity 更高效地进行渲染。当物体按照合理的层级顺序排列时,渲染引擎可以减少不必要的计算,从而提高游戏的运行性能。

三、常见的修改物体层级的错误认知 - 修改 Z 轴

(一)通过修改 Z 轴来改变层级的做法

在 Unity 的坐标系中,Z 轴方向垂直于屏幕平面。一些开发者可能会尝试通过修改物体的 Z 轴坐标来改变其显示层级,即认为 Z 轴数值越大,物体越靠前显示

(二)不建议使用修改 Z 轴方法的原因

  1. 与 3D 概念混淆在 2D 游戏中,虽然可以通过 Z 轴来调整显示顺序,但这与 2D 游戏的设计理念不符。2D 游戏主要关注 X 轴和 Y 轴方向的平面内容,强行使用 Z 轴来控制层级会使逻辑变得混乱,尤其是当项目逐渐复杂时,容易导致难以维护的代码结构。

  2. 渲染问题:Unity 的 2D 渲染管线并非专门针对通过 Z 轴来处理层级关系进行优化。当大量物体通过 Z 轴来设置层级时,可能会出现渲染异常,例如物体闪烁、错误的遮挡关系等。

  3. 碰撞检测问题:在 2D 游戏中,碰撞检测通常是基于 2D 平面进行的。修改 Z 轴可能会影响碰撞检测的准确性,导致碰撞检测结果与预期不符,影响游戏的正常玩法。

四、正确修改物体层级的方法 - 修改图片参数

(一)使用 Sorting Layer(排序层)

  1. Sorting Layer 的概念:Sorting Layer 是 Unity 中用于管理物体层级的重要工具。开发者可以创建多个排序层,并将不同的物体分配到不同的排序层中。排序层之间有明确的先后顺序,位于较高顺序排序层的物体将显示在较低顺序排序层的物体之上。

  2. 创建和管理 Sorting Layer

  • 在 Unity 的 Project 视图中,右键点击创建一个新的文件夹,命名为 “SortingLayers”(可自行命名)。这一步主要是为了更好地组织排序层资源。

  • 打开 Unity 的 Project Settings(项目设置)窗口,在左侧列表中选择 “Tags & Layers”。在窗口右侧找到 “Sorting Layers” 部分,点击 “+” 号可以添加新的排序层。为新的排序层命名,例如 “Background”“Characters”“Foreground” 等,根据游戏中不同物体的类别进行命名,以便清晰区分。

  • 可以通过拖动排序层的位置来调整它们之间的顺序。例如,将 “Background” 层拖到最下方,意味着背景物体所在的层会被其他层的物体遮挡。

3.为物体分配 Sorting Layer

  • 选中需要设置层级的物体,在 Inspector 视图中找到 “Sorting Layer” 属性。点击下拉菜单,选择之前创建好的适合该物体的排序层。例如,将所有背景物体的 Sorting Layer 设置为 “Background”,将玩家角色的 Sorting Layer 设置为 “Characters”。

4.优点:

  • 逻辑清晰:通过创建不同的排序层并为物体分配,能够直观地管理物体的层级关系,使项目的结构更加清晰。

  • 方便管理:在游戏开发过程中,如果需要调整某一类物体的层级,只需要修改排序层的序,而不需要逐个修改物体的属性,大大提高了开发效率。

  • 与 Unity 的 2D 渲染管线兼容:Sorting Layer 是 Unity 专门为 2D 物体层级管理设计的功能,与 2D 渲染管线紧密配合,能够确保渲染的稳定性和准确性。

5.缺点:

  • 层级数量限制:在 Unity 中,默认的排序层数量是有限的(虽然可以通过一些方式增加但也存在一定限制)。如果游戏中需要大量不同层级的物体,可能会面临排序层不够用的情况。

  • 不适合精细调整:对于同一排序层内物体的层级微调,Sorting Layer 无法直接实现,需要结合其他方法。

(二)使用 Order in Layer(层内排序)

  1. Order in Layer 的概念:在同一个 Sorting Layer 中,物体还可以通过 Order in Layer 属性来进一步调整层级顺序。Order in Layer 是一个整数值,数值越大,物体在该排序层内越靠前显示。

  2. 设置 Order in Layer

选中物体后,在 Inspector 视图中,除了 Sorting Layer 属性外,还可以看到 “Order in Layer” 属性。例如,在 “Characters” 排序层中,有玩家角色和敌人角色,假设玩家角色需要始终显示在敌人角色之上,可以将玩家角色的 Order in Layer 值设置得比敌人角色的大。

  1. 优点

(1)精细控制:能够在同一排序层内对物体的层级进行精细调整,满足游戏中一些特殊的显示需求。例如,在一个场景中,多个角色在同一排序层,但某个角色需要在特定情况下显示在其他角色前面,就可以通过调整 Order in Layer 来实现。

(2)灵活性高:与 Sorting Layer 配合使用,提供了更加灵活的层级管理方式。可以先通过 Sorting Layer 将物体分为不同的大类,再通过 Order in Layer 在每一类中进行具体的层级排序。

4.缺点:

(1)容易混淆:如果在同一排序层内有大量物体,并且频繁调整 Order in Layer 值,可能会致层级关系混乱,不易管理和维护。

(2)依赖 Sorting Layer:Order in Layer 是在 Sorting Layer 的基础上发挥作用的,如果 Sorting Layer 设置不合理,Order in Layer 也难以达到预期的效果。

五、案例分析

(一)简单 2D 游戏场景搭建

假设我们正在制作一个简单的 2D 横版冒险游戏,场景中有背景、玩家角色、敌人角色和一些道具。

  1. 创建 Sorting Layer

创建 “Background” 排序层用于放置背景物体,如山脉、天空等。

创建 “Characters” 排序层用于放置玩家角色和敌人角色。

创建 “Props” 排序层用于放置道具,如宝箱、武器等。

  1. 为物体分配 Sorting Layer

将所有背景物体的 Sorting Layer 设置为 “Background”。

将玩家角色和敌人角色的 Sorting Layer 设置为 “Characters”。

将道具的 Sorting Layer 设置为 “Props”。

  1. 调整 Order in Layer

在 “Characters” 排序层中,将玩家角色的 Order in Layer 值设置为 1,敌人角色的 Order in Layer 值设置为 0,这样玩家角色会显示在敌人角色之上。在 “Props” 排序层中,根据道具在游戏中的逻辑位置,为不同的道具设置合适的 Order in Layer 值,例如将靠近玩家的道具设置为较大的值,使其显示在其他道具前面。

(二)层级调整解决实际问题

在游戏开发过程中,可能会遇到这样的问题:玩家释放技能时,技能特效需要显示在玩家角色和敌人角色之上,但在一些 UI 元素之下。

  1. 创建新的 Sorting Layer:创建一个新的排序层,命名为 “SkillEffects”。

  2. 调整物体的 Sorting Layer:将技能特效的 Sorting Layer 设置为 “SkillEffects”,并将 “SkillEffects” 排序层的顺序调整到 “Characters” 排序层之上,同时在所有 UI 相关排序层之下(如果有专门的 UI 排序层)。

  3. 微调 Order in Layer:如果在 “SkillEffects” 排序层中还有其他类型的特效,根据特效的显示优先级,调整它们的 Order in Layer 值。

六、结语

在 Unity 2023 的 2D 制作中,正确管理物体层级是确保游戏画面质量和逻辑正确的关键。通过本文介绍的 Sorting Layer 和 Order in Layer 等方法,开发者能够更加高效、准确地控制物体的显示顺序。希望本文能够帮助广大 Unity 开发者在 2D 游戏制作中更好地处理物体层级相关的问题,顺利推进项目开发。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号