跳到主要内容

Unity UI 设置指南

本指南将引导你使用 Unity UI 的 Canvas 来实现 Pinnr。

设置 Canvas

通过点击菜单栏中的 GameObject → UI → Canvas 来创建一个 Canvas GameObject。

也可以在 Hierarchy 视图中右键单击,然后选择 UI → Canvas 来完成此操作。

Create a Canvas

在 Inspector 中,将 Canvas 的 Render Mode 设置为 Screen Space – OverlayScreen Space – Camera

Set Render Mode

备注

有关使用 World Space Render Mode 的特殊情况,请参阅 附加内容 章节。

在已创建的 Canvas GameObject 上添加一个 Pinnr Canvas 组件,可在 Inspector 中点击 Add Component → Scripts → Calcatz.Pinnr → Pinnr Canvas 来完成。

Add Pinnr Canvas

Pinnr Canvas Added

如果将组件正确添加到 Canvas GameObject 上,这些属性将会自动完成赋值。其中 Camera 属性会默认从主摄像机自动获取;如果需要使用指定的摄像机,也可以手动指定摄像机引用。

设置世界空间目标对象

对于世界空间目标对象的设置方式没有限制。我们只需指定需要跟踪的 Transform,该 Transform 将用于确定 UI 元素的位置。

在 Demo 场景中,我们添加了一个跟随胶囊角色顶部的 UI 元素。为此,我们在角色上方创建了一个子 GameObject,并将其作为 UI 元素跟随的目标。

Create Target

设置 UI 元素

Create Element

在 Canvas GameObject 下创建任意 UI GameObject,然后在 Inspector 中点击 Add Component → Scripts → Calcatz.Pinnr → Pinnr Element UGUI,为其添加一个 Pinnr Element UGUI 组件。

Add Pinnr Element UGUI

在示例场景中,我们使用 FilledHealthBar GameObject 作为 UI 元素示例。为了使该功能正常工作,锚点必须设置为 Point。该点可以放置在任意位置,但建议选择居中位置。同时,请确保不要将其设置为 Stretch。

Set Anchor

将之前创建的世界空间目标对象进行指定。

Assign Target

  • World Space Target Object: UI 元素需要跟随的世界空间目标对象。
  • Always Update UI Position: 每帧更新 UI 位置。如果 UI 元素不需要持续跟随目标,可将其禁用以优化性能,并在需要时通过脚本调用 UpdateUIPosition() 方法手动更新位置。
  • Disable If Behind Camera: 当目标物体位于摄像机后方时禁用该行为(防止其显示在屏幕上)。
  • Auto Update In Edit Mode: 在编辑模式下(编辑器未处于播放模式时)每帧自动更新位置。
  • Canvas: 只要根 Canvas GameObject 上已添加 Pinnr Canvas 组件,该属性将自动初始化。此项为必需。
  • Enable Proximity Based Scaling: 启用后可使用基于距离的缩放功能。该功能会根据摄像机与 UI 元素之间的距离对元素进行缩放。 Proximity Based Scaling
    • Initial Scale: 元素的初始缩放值。
    • Distance:
      • Far: 当摄像机与该元素之间的距离大于或等于 Far 值时,应用最小缩放值。
      • Near: 当摄像机与该元素之间的距离小于或等于 Near 值时,应用最大缩放值。
    • Scale: 根据指定的距离数值应用的缩放值。如果距离介于 Far 与 Near 之间,则缩放值会根据两者之间的距离比例进行插值计算。
    • World Space Scale Render Factor(仅适用于 World Space Render Mode): 仅在 World Space Render Mode 下使用的缩放系数。

至此设置完成,创建的 UI 元素将会跟随目标的位置。