Skip to main content

VRC Ui Shape

VRC Ui Shape 组件允许你创建玩家可以与之交互的 Canvas 组件。

  • 玩家可以指向、点击或滚动你的 UI 进行交互,类似于 VRChat 菜单。
  • 玩家可以从远处进行交互。这通常使它们比 Interact 事件更容易使用。

两个 UI 示例:一个带有复选框的"Toggle Mirror"设置,以及一个带有"Previous"和"Next"按钮的页面指示器。

VRC Ui Shape 只有一个可配置参数:

参数描述
Allow Focus View此画布是否应允许用户在手机或平板电脑上进入焦点视图。

如何设置画布​

当你右键点击层级视图窗口,点击"UI" -> "TextMeshPro (VRC)"时,SDK 会自动设置你的画布。SDK 会自动配置你的画布并添加其他必需的组件。

两个 UI 示例

如果你想手动配置画布,请按照以下步骤操作。否则,你的画布可能无法在 VRChat 中工作。

  1. 向游戏对象添加 Canvas 组件,或创建一个新的游戏对象。
    • Unity 会自动向画布添加其他有用的组件。
  2. 在与画布相同的游戏对象上添加"VRC_UIShape"组件。
  3. 将游戏对象的图层从"UI"更改为"Default"或其他图层。
    • UI 图层将阻止用户与你的 UI 交互,除非 VRChat 菜单打开。
  4. 缩小游戏对象的 x、y 和 z 缩放。
    • 默认情况下,缩放为 1,这太大了。(1 像素 = 1 米)
    • 将缩放减小到类似于 0.01 的值。(1 像素 = 0.01 米)
  5. 将画布的"Render Mode"属性从"Screen Space"更改为"World Space"。
    • 世界空间画布显示在世界内部,而不是直接显示在屏幕上。
  6. 向画布添加 UI 元素。
    • 例如,你可以添加文本、按钮、开关、滚动视图、输入字段等。
    • 将 UI 元素的"Navigation"属性设置为"None"。这可以防止玩家在世界中移动时意外使用 UI。
    • 使用 TextMeshPro 而非 Unity 的内置组件以获得更高的文本质量。

按照这些步骤,玩家可以通过点击来与你的 UI 进行交互。

常见问题​

如果画布配置不正确,玩家可能无法与之交互。以下是解决常见问题的方法:

如果画布没有显示 VRChat 指针:​

  • 画布上必须有一个 VRC_UIShape 组件。 确保你没有将其放在其他子对象上。
  • 画布的图层不能是 UI。 将画布及其所有子对象设置为 Default 即可。
  • 带有 VRC_UIShape 的对象必须有一个盒碰撞器。 如果没有,世界上传后会自动添加一个。但是,如果你自己添加了碰撞器,必须确保其大小正确。
  • 确保没有其他碰撞器阻挡画布。

如果指针显示但 UI 无响应:​

  • 场景必须有一个 EventSystem。 创建画布时会自动添加,所以不要删除它。
  • 确保可交互元素没有被不可见元素覆盖。 这种情况经常发生在文本框重叠并覆盖按钮时。有几种解决方案:你可以重新排列按钮使其位于顶部(层级视图中较低的位置),你可以调整文本大小使其不覆盖按钮,或者你可以将文本的 raycast target 设置为 false。
  • 确保要交互的 UI 有一个启用了 Raycast Target 的图片。 如果你通过层级视图的右键菜单创建 UI 元素,这会自动生成。
  • 确保画布有 Graphic Raycaster 组件。 添加 Canvas 组件时,此组件会自动添加到你的游戏对象中。
  • 确保你从正确的方向看向画布。画布的 Z 正向轴应背对你。

如果 UI 有响应但行为不符合预期:​

  • 某些 UI 事件出于安全原因在 VRChat 中被移除。确保你使用的事件在此列表中。
  • 如果使用 SendCustomEvent,请确保在 UI 按钮和 UdonBehaviour 的 event custom 节点中输入的拼写完全相同。
  • 如果向 UdonSharp behaviour 发送 SendCustomEvent,事件必须设置为 public。如果设置为 private,将无法工作。
  • 如果 UdonBehaviour 出现问题,它可能会停止运行。了解更多关于调试 Udon 项目的信息。

如果 UI 在你移动、按键或移动摇杆时移动:​

  • 将所有 UI 元素的 Navigation 设置为 None。
  • 如果 UI 有滚动条,将 Scroll Sensitivity 设置为 0。

如果你希望 TextField 不显示 VRChat 键盘:​

  • 添加 VRCInputFieldKeyboardOverride 组件以防止 VRChat 键盘出现。

焦点视图​

VRChat 的"Focus View"功能允许用户在手机或平板电脑上展开、平移和缩放世界的 UI。这使得他们更容易在屏幕上阅读和交互小文本。

画布必须满足以下条件才能使用焦点视图:

  • 画布配置正确,并具有 VRC_UIShape 组件。
  • VRC_UIShape 组件的"Allow Focus View"参数已启用。
  • 你没有在 VRChat.com 上的世界设置中禁用焦点视图。

此外,世界中的用户必须满足以下条件:

  • 用户在手机或平板电脑上玩 VRChat。
  • 用户使用触摸屏作为唯一输入设备。
  • 用户没有在其 VRChat 设置中禁用焦点视图。
  • 用户距离画布 3-6 米以内(取决于画布大小)
  • 用户距离画布 0.6-2 米以上(取决于画布大小)

当用户处于焦点视图时:

  • 用户的铭牌会显示一个焦点视图图标,其他玩家可以看到。
  • 用户保持在焦点视图中,直到手动关闭。