如何防止 UI 光线投射通过另一个 Canvas?
How can I prevent UI raycast from going through another Canvas?
我在一个场景中有两个 canvas,所有 Canvas
都设置为屏幕 Space 模式相机渲染模式。第一个Canvas
是主要的Canvas
还有一些buttons.The'order in layer'属性是0.
第二个Canvas
覆盖了第一个Canvas
的整个区域。当您单击第一个 Canvas
上的某个按钮时,第二个 Canvas
将在第一个 Canvas
上弹出(层中的顺序为 1)。
问题是,当我触摸第二个 canvas 时,光线投射也击中了第一个 Canvas
。当屏幕上显示第二个 Canvas
(弹出窗口)时,如何防止光线投射击中第一个 Canvas
?
如果第二个 Canvas
只是第一个 UI 之上的弹出窗口,则无需将其设为 Canvas
。改为 Panel
。 Select 你的第一个 Canvas
,右击然后转到 UI->面板。你也可以从 GameObject->UI->Panel 执行此操作。只需确保选择第一个 Canvas
。
将在第一个 Canvas
内创建一个新的 UI 面板。您可以将其重命名为弹出面板,然后将弹出面板 UI 的所有 UI 组件(例如 Buttons
和 Texts
放在弹出面板下。使用 popupPanel.SetActive(true);
显示弹出窗口 Window,使用 popupPanel.SetActive(false);
隐藏它。
只需将PopupPanel拖到下面脚本中的popupPanel槽中,即可使用showPopup()
和hidePopup()
控制弹出面板。
public GameObject popupPanel;
void showPopup()
{
popupPanel.SetActive(true);
}
void hidePopup()
{
popupPanel.SetActive(false);
}
编辑:
确保您的弹出窗口 Panel
位于层次结构 canvas
的末尾,以使其呈现在其他所有内容之上。这就是背后阻止与他人互动的主要思想。
我在一个场景中有两个 canvas,所有 Canvas
都设置为屏幕 Space 模式相机渲染模式。第一个Canvas
是主要的Canvas
还有一些buttons.The'order in layer'属性是0.
第二个Canvas
覆盖了第一个Canvas
的整个区域。当您单击第一个 Canvas
上的某个按钮时,第二个 Canvas
将在第一个 Canvas
上弹出(层中的顺序为 1)。
问题是,当我触摸第二个 canvas 时,光线投射也击中了第一个 Canvas
。当屏幕上显示第二个 Canvas
(弹出窗口)时,如何防止光线投射击中第一个 Canvas
?
如果第二个 Canvas
只是第一个 UI 之上的弹出窗口,则无需将其设为 Canvas
。改为 Panel
。 Select 你的第一个 Canvas
,右击然后转到 UI->面板。你也可以从 GameObject->UI->Panel 执行此操作。只需确保选择第一个 Canvas
。
将在第一个 Canvas
内创建一个新的 UI 面板。您可以将其重命名为弹出面板,然后将弹出面板 UI 的所有 UI 组件(例如 Buttons
和 Texts
放在弹出面板下。使用 popupPanel.SetActive(true);
显示弹出窗口 Window,使用 popupPanel.SetActive(false);
隐藏它。
只需将PopupPanel拖到下面脚本中的popupPanel槽中,即可使用showPopup()
和hidePopup()
控制弹出面板。
public GameObject popupPanel;
void showPopup()
{
popupPanel.SetActive(true);
}
void hidePopup()
{
popupPanel.SetActive(false);
}
编辑:
确保您的弹出窗口 Panel
位于层次结构 canvas
的末尾,以使其呈现在其他所有内容之上。这就是背后阻止与他人互动的主要思想。