如何防止UI光线投射通过另一个画布
本文关键字:另一个 何防止 UI 光线投射 | 更新日期: 2023-09-27 17:57:30
我在一个场景中有一个两个画布,所有Canvas
都设置为屏幕空间模式相机渲染模式。第一个Canvas
是主Canvas
,并且具有一些按钮。"层中的顺序"属性为0。
第二个Canvas
覆盖了第一个Canvas
的整个区域。当您单击第一个Canvas
上的某个按钮时,第二个Canvas
将在第一个Canvas
上弹出(层中的顺序为1)。
问题是,当我触摸第二个画布时,光线投射也会碰到第一个Canvas
。当屏幕上显示第二个Canvas
(弹出窗口)时,如何防止光线投射击中第一个Canvas
?
如果第二个Canvas
只是第一个的弹出式UI,则不需要将其设置为Canvas
。改为Panel
。选择您的第一个Canvas
,右键单击,然后转到UI->面板。您也可以从GameObjectUI->Panel执行此操作。只需确保选择了您的第一个Canvas
即可。
将在第一个Canvas
中创建一个新的UI面板。您可以将其重命名为Popup面板,然后将弹出UI的所有UI组件(如Buttons
和Texts
)放在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
的末尾,使其呈现在其他所有内容之上。这是阻止与背后其他人交互的主要思想。