如何防止UI光线投射通过另一个画布

本文关键字:另一个 何防止 UI 光线投射 | 更新日期: 2023-09-27 17:57:30

我在一个场景中有一个两个画布,所有Canvas都设置为屏幕空间模式相机渲染模式。第一个Canvas是主Canvas,并且具有一些按钮。"层中的顺序"属性为0。

第二个Canvas覆盖了第一个Canvas的整个区域。当您单击第一个Canvas上的某个按钮时,第二个Canvas将在第一个Canvas上弹出(层中的顺序为1)。

问题是,当我触摸第二个画布时,光线投射也会碰到第一个Canvas。当屏幕上显示第二个Canvas(弹出窗口)时,如何防止光线投射击中第一个Canvas

如何防止UI光线投射通过另一个画布

如果第二个Canvas只是第一个的弹出式UI,则不需要将其设置为Canvas。改为Panel。选择您的第一个Canvas,右键单击,然后转到UI->面板。您也可以从GameObjectUI->Panel执行此操作。只需确保选择了您的第一个Canvas即可。

将在第一个Canvas中创建一个新的UI面板。您可以将其重命名为Popup面板,然后将弹出UI的所有UI组件(如ButtonsTexts)放在Popup面板下。使用popupPanel.SetActive(true);显示弹出窗口,使用popupPanel.SetActive(false);隐藏弹出窗口。

只需将PopupPanel拖动到下面脚本中的PopupPanel插槽中,就可以使用showPopup()hidePopup()来控制弹出面板。

public GameObject popupPanel;
void showPopup()
{
    popupPanel.SetActive(true);
}
void hidePopup()
{
    popupPanel.SetActive(false);
}

编辑:

确保弹出的Panel位于层次结构中canvas的末尾,使其呈现在其他所有内容之上。这是阻止与背后其他人交互的主要思想。