我在场景中有两个画布,所有Canvas
都设置为屏幕空间模式相机渲染模式。第一个Canvas
是主Canvas
,并且有一些按钮。'在图层中排序'属性是0。
第二个Canvas
涵盖了第一个Canvas
的整个区域。当您点击第一个Canvas
上的某个按钮时,第二个Canvas
会弹出第一个Canvas
(图层中的顺序为1)。
问题在于,当我触摸第二个画布时,光线投射也会击中第一个Canvas
。在屏幕上显示第二个Canvas
(弹出窗口)时,如何防止光线投射到达第一个Canvas
?
答案 0 :(得分:1)
如果第二个Canvas
只是一个弹出窗口,而不是第一个,则不需要将其设为Canvas
。改为Panel
。选择您的第一个Canvas
,右键点击,然后转到用户界面 - > 面板。您也可以从 GameObject 执行此操作 - &gt ;的 UI 强> - >的面板即可。只需确保选择了第一个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
的末尾,以使其在其他所有内容上呈现。这是阻止与其背后的其他人互动的主要想法。