我有一个主要脚本附加到" world" (根)对象在场景中,负责全局事务,如全局键事件,调试等......
void OnGUI()
{
GUI.color = Color.red;
GUI.depth = 220;
windowRect0 = GUI.ModalWindow(0, windowRect0, DoMyWindow, "Red Window");
}
void DoMyWindow(int windowID)
{
if (GUI.Button(new Rect(10, 20, 100, 20), "Hello World"))
{
print("Got a click in window with color " + GUI.color);
Event.current.Use();
}else
{
Event.current.Use();
}
GUI.DragWindow(new Rect(0, 0, 10000, 10000));
}
我还在屏幕上动态生成了多个对象(国际象棋方块),每个对象都有一个脚本,当鼠标悬停在其上时会突出显示,每个鼠标点击它时会弹出详细信息(预制):
public class ChessTileHandler : MonoBehaviour, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler{
...
public void OnPointerEnter(PointerEventData eventData)
{
.. highlight object...
}
public void OnPointerExit(PointerEventData eventData)
{
... return to normal
}
public void OnPointerClick(PointerEventData eventData)
{
... pop details...
}
}
想法是根对象会弹出特定键组合上的小调试模式窗口。它会弹出窗口,但它不是模态的,当我从GUI调试窗口单击按钮时,它后面的国际象棋方块对点击事件做出正确反应,当我将鼠标悬停在GUI元素上时,它也会对悬停事件作出反应。
我的问题是,我如何创建一个真正的模态窗口,以便" eat"任何鼠标点击它(最好是鼠标点击它外面),直到我禁用GUI元素?