Unity UI 设置指南
本指南将引导你使用 Unity UI 的 Canvas 来实现 Pinnr。
设置 Canvas
通过点击菜单栏中的 GameObject → UI → Canvas 来创建一个 Canvas GameObject。
也可以在 Hierarchy 视图中右键单击,然后选择 UI → Canvas 来完成此操作。

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

有关使用 World Space Render Mode 的特殊情况,请参阅 附加内容 章节。
在已创建的 Canvas GameObject 上添加一个 Pinnr Canvas 组件,可在 Inspector 中点击 Add Component → Scripts → Calcatz.Pinnr → Pinnr Canvas 来完成。


如果将组件正确添加到 Canvas GameObject 上,这些属性将会自动完成赋值。其中 Camera 属性会默认从主摄像机自动获取;如果需要使用指定的摄像机,也可以手动指定摄像机引用。
设置世界空间目标对象
对于世界空间目标对象的设置方式没有限制。我们只需指定需要跟踪的 Transform,该 Transform 将用于确定 UI 元素的位置。
在 Demo 场景中,我们添加了一个跟随胶囊角色顶部的 UI 元素。为此,我们在角色上方创建了一个子 GameObject,并将其作为 UI 元素跟随的目标。

设置 UI 元素

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

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

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

- 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 元素之间的距离对元素进行缩放。

- Initial Scale: 元素的初始缩放值。
- Distance:
- Far: 当摄像机与该元素之间的距离大于或等于 Far 值时,应用最小缩放值。
- Near: 当摄像机与该元素之间的距离小于或等于 Near 值时,应用最大缩放值。
- Scale: 根据指定的距离数值应用的缩放值。如果距离介于 Far 与 Near 之间,则缩放值会根据两者之间的距离比例进行插值计算。
- World Space Scale Render Factor(仅适用于 World Space Render Mode): 仅在 World Space Render Mode 下使用的缩放系数。
至此设置完成,创建的 UI 元素将会跟随目标的位置。