Version: 6000.3
语言: 中文
创建世界空间UI
世界空间UI大小和位置示例

面板输入配置属性参考

面板输入配置组件提供了用于配置世界空间UI的输入设置的属性,并指定UI Toolkit如何与uGUI(Unity UI)交互。

世界空间选项(World Space Options) 属性

下表描述了可用于世界空间选项的属性:

财产 描述
交互层 选择一个或多个物理层来投射世界空间光线并确定指针事件目标。
最大交互距离(Max Interaction Distance) 设置与世界空间UI交互的距离。默认为无限(无大),但您可以自定义它XR一个总称,包括虚拟现实 (VR)、增强现实 (AR) 和混合现实 (MR) 应用。支持这些形式的交互式应用程序的设备可以称为 XR 设备。更多信息
请参阅术语表
或性能需求。距离使用游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
单位,与变换位置一致,并且相机在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
请参阅术语表
剪切平面限制相机从其当前位置可以看到的距离或距离的平面。摄像机的可视范围介于远裁剪平面和近裁剪平面之间。查看远剪切平面和近剪切平面。更多信息
请参阅术语表
.
默认事件摄像机为主摄像机 启用或禁用使用主摄像机作为事件摄像机,将屏幕位置转换为世界空间光线。
如果启用且主摄像机发生更改,则事件摄像机会自动更新为新摄像机。
如果没有主摄像头处于活动状态,Unity 将禁用基于屏幕的事件,直到主摄像头变为活动状态。
活动摄像机 设置一个或多个摄像机,以便在不使用主摄像机时将屏幕位置转换为世界空间光线。
如果指定多个摄像机,Unity 会按顺序处理它们,直到其中一个摄像机产生击中碰撞器的光线。
注意:如果您未指定任何事件摄像头,Unity 将禁用基于屏幕的事件。

事件系统交互属性

您可以使用事件系统一种根据输入(无论是键盘、鼠标、触摸还是自定义输入)向应用程序中的对象发送事件的方法。事件系统由几个组件组成,这些组件协同工作以发送事件。更多信息
请参阅术语表
互动
属性来配置 UI 工具包与 uGUI 系统的交互方式。

面板输入重定向

面板输入重定向属性确定uGUI EventSystem是否重定向面板输入。如果启用,您可以从以下选项中进行选择:

  • 自动切换(如果存在,则从 EventSystem 重定向)(默认):只要 EventSystem 处于活动状态,它就会充当所有 UI 的输入源。否则,UIToolkit的内置输入将处理输入。
  • 无输入重定向:UI 工具包的内置输入处理输入,无论事件系统是否处于活动状态。
  • 始终从 EventSystem 重定向(如果不可用,请等待):输入将保持禁用状态,直到 EventSystem 处于活动状态,此时它将成为输入源。使用此模式可以通过切换 EventSystem 组件来动态启用或禁用所有 UI 输入。

自动创建面板组件

Auto Create Panel Components 属性决定是否在 EventSystem 下自动创建 UI Toolkit 组件,以处理 UI Toolkit 和 uGUI 面板之间的输入重定向。

如果启用此选项,Unity 会自动创建以下组件:

  • 面板事件处理程序
  • 面板光线投射器
  • 世界文档 Raycaster

如果禁用此选项,请确保为每个世界空间事件摄像机分配一个世界文档光线投射器组件。你还必须确保每个面板都通过 C# 代码具有关联的面板光线投射器和面板事件处理程序组件。以下代码示例显示了如何执行此作:

using UnityEngine.UIElements;

// Add this component to a GameObject to automatically initialize the following components
// - PanelRaycaster
// - PanelEventHandler
public class PanelComponentsInitializer : MonoBehaviour
{
    public PanelSettings panelSettings;

    void Start()
    {
        var panelRaycaster = GetComponent<PanelRaycaster>();
        if (panelRaycaster != null)
            panelRaycaster.panel = panelSettings.panel;

        var panelEventHandler = GetComponent<PanelEventHandler>();
        if (panelEventHandler != null)
            panelEventHandler.panel = panelSettings.panel;
    }
}

其他资源

创建世界空间UI
世界空间UI大小和位置示例