Unity3d GUI模态窗口

时间:2017-01-24 15:25:32

标签: unity3d mouseevent mouseover

我有一个主要脚本附加到" 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元素?

0 个答案:

没有答案