GUI.ModalWindow不是带按钮的模态

时间:2017-06-08 14:27:44

标签: unity5 unity2d

我尝试使用GUI.ModalWindow来阻止用户与我的场景中的其他项目进行交互,但仍然可以使用ModalWindow之外的按钮。

public class ModalDialog : MonoBehaviour
{
    private Rect windowRect = new Rect(100, 130, 220, 100);

    void OnGUI()
    {
        windowRect = GUI.ModalWindow(0, windowRect, DoMyWindow, "My Window");
    }

    void DoMyWindow(int windowID)
    {
        if (GUI.Button(new Rect(10, 20, 100, 20), "Hello World"))
        {
            print("Got a click");
        }
    }
}

通过附加到 Canvas 的上述课程(取自the Unity docs),我可以点击屏幕上的两个按钮:

Screen shot showing setup and error

有没有我错过的东西?

1 个答案:

答案 0 :(得分:0)

要回答我自己的问题,我联系了Unity支持并收到以下回复:

  

您手动创建的UI组件,按钮,文本等与您通过脚本创建的GUI分开运行,因为这些是2个单独的类。所以你得到的行为是预期的而不是错误。

对我而言,由于无法使用Unity编辑器创建UI,因此ModalWindow的使用受到限制。

为了解决我的问题,我放弃了ModalWindow,而是创建了一个Canvas作为我的根GameObject。我添加了一个Panel GameObject作为画布的子项,并确保它出现在我所有其他UI元素的顶部。然后,当显示面板时,其下面的UI元素无法与之交互。

Scene
  |- Canvas
      |- Modal Panel
      |- UI Button