Wiki
857 words
4 minutes
Widget中Overlay
Updated 2025-04-23

在虚幻引擎的 UMG (Unreal Motion Graphics) 中,制作 Widget 时常常习惯性地先添加一个 Overlay(叠加面板)作为根面板,然后再在其中放置其他的 UI 组件或布局面板。这不是强制性的,但它是一个非常常见且有用的实践,其作用主要体现在以下几个方面:

  1. 提供灵活的层叠能力 (Layering / Z-Ordering): 这是 Overlay 最核心的功能。它允许将其子控件按照添加的顺序(或在细节面板中调整顺序)进行层叠显示,后面的子控件会叠加在前面的子控件之上。当你的 UI 需要有弹出窗口、提示信息、状态图标叠加在角色血条上方,或者任何需要元素在视觉上分层显示的情况时,Overlay 是最直接和方便的解决方案。将它作为根面板,意味着你整个 Widget 的内容都可以方便地利用这种层叠能力。

  2. 作为一个中立的容器 (Neutral Container): Overlay 本身不会对其子控件施加严格的布局限制(比如 Vertical Box 强制垂直排列,Horizontal Box 强制水平排列)。它只是简单地将子控件叠加起来。这意味着你可以在 Overlay 中混合使用各种布局面板和其他控件。例如,你可以在一个 Overlay 中放置一个负责整体水平布局的 Horizontal Box,同时在它上面叠加一个用于显示弹出信息的 Canvas Panel 或另一个 Vertical Box

  3. 避免根面板的布局限制: 如果你直接使用一个 Vertical BoxHorizontal Box 作为根面板,那么整个 Widget 的所有内容都会受到该面板的线性布局限制。这会使得在不同区域放置需要不同布局规则的元素变得困难。使用 Overlay 作为根面板,你可以将不同的区域或功能模块(例如,左侧的角色面板、底部快捷栏、屏幕中央的准星)作为 Overlay 的子项添加,每个子项可以是独立的布局面板(如 Canvas Panel 用于自由定位,Grid Panel 用于网格布局等),从而提高整体布局的灵活性。

  4. 方便全屏背景或遮罩: 如果你需要一个全屏的背景图或者一个半透明的遮罩来突出某个 UI 元素(比如弹出一个模态窗口时),你可以将一个 ImageBorder 作为 Overlay 的第一个子项添加到最底层,并将其设置为填充整个父级(Fill),然后在它上面添加其他 UI 内容。

总结来说,将 Overlay 作为 Widget 的根面板,主要作用是提供一个灵活的、支持层叠的容器,让你能够在顶层方便地管理和组织各种不同布局和功能的 UI 元素,尤其是在需要元素互相叠加显示的情况下。

虽然 Canvas Panel 也可以作为根面板,它擅长基于锚点和偏移进行元素的自由定位,但也常常与其他面板(包括 Overlay)结合使用,以实现更复杂的 UI 结构。选择哪种面板作为根面板取决于你的 Widget 的主要布局需求,但 Overlay 因其层叠和中立容器的特性,成为了许多复杂 UI 的一个常用起点。

WidgetComponent

Widget中Overlay
https://fuwari.vercel.app/wiki/unreal/gas/ui/widget中overlay/
Author
Qingswe
Published at
2025-04-23
License
CC BY-NC-SA 4.0