在 Unity 中,Canvas 是 UI 系统的核心组件,而 Render Mode(渲染模式)决定了这个 UI 是如何被渲染的。Canvas 的 Render Mode 属性有三种选项,每种模式决定了 UI 元素的位置和渲染方式:
🎨 Render Mode 的三种类型:
1. Screen Space – Overlay(屏幕空间 – 覆盖)
✅ 作用:
- UI 元素固定显示在屏幕最上层,不受相机影响。
- UI 分辨率根据
CanvasScaler自动适配。 - 最常见的设置方式,用于大多数 2D UI,如按钮、面板、血条、提示框等。
🔧 特点:
- 不需要指定 Camera。
- UI 永远贴在屏幕上,随着窗口大小缩放。
- 排序根据
Canvas.sortingOrder控制。
📌 使用场景:
- 静态 UI、HUD(例如生命值、积分、菜单等)。
2. Screen Space – Camera(屏幕空间 – 相机)
✅ 作用:
- UI 看起来也贴在屏幕上,但通过一个摄像机渲染。
- 可以添加景深、后处理等效果。
🔧 特点:
- 需要指定一个 Camera。
- UI 会根据该摄像机的视角决定显示效果。
- 可设置
Plane Distance(与摄像机的距离)。
📌 使用场景:
- UI 需要和 3D 场景某种方式融合,比如带有深度感、阴影或模糊处理的 HUD。
3. World Space(世界空间)
✅ 作用:
- UI 元素以 3D 物体的方式存在于场景中,可以被其他摄像机看到。
- 类似一个 3D 面板,UI 有物理位置和旋转角度。
🔧 特点:
Canvas就像一个 3D 面板。- UI 受物理遮挡、光照影响。
- 尺寸和位置需手动调整(没有自动适配)。
📌 使用场景:
- 游戏中嵌入式 UI,例如:
- 角色头顶的血条。
- 世界中的操作面板、提示箭头。
- VR/AR 中的交互 UI。
总结对比:
| 模式 | 是否受摄像机影响 | 是否适合静态 UI | 是否有3D空间位置 | 使用难度 |
|---|---|---|---|---|
| Screen Space – Overlay | ❌ 否 | ✅ 是 | ❌ 否 | ⭐ 最简单 |
| Screen Space – Camera | ✅ 是 | ✅ 是 | ❌ 否 | ⭐⭐ 适中 |
| World Space | ✅ 是 | ❌ 否 | ✅ 是 | ⭐⭐⭐ 较复杂 |
如果你在做 2D 游戏或一般 UI,推荐使用 Screen Space - Overlay。
如果你希望 UI 有景深效果或参与 3D 渲染,使用 Screen Space - Camera。
如果你希望 UI 像游戏物体一样存在在世界中,使用 World Space。