我尝试使用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),我可以点击屏幕上的两个按钮:
有没有我错过的东西?
答案 0 :(得分:0)
要回答我自己的问题,我联系了Unity支持并收到以下回复:
您手动创建的UI组件,按钮,文本等与您通过脚本创建的GUI分开运行,因为这些是2个单独的类。所以你得到的行为是预期的而不是错误。
对我而言,由于无法使用Unity编辑器创建UI,因此ModalWindow的使用受到限制。
为了解决我的问题,我放弃了ModalWindow,而是创建了一个Canvas
作为我的根GameObject。我添加了一个Panel
GameObject作为画布的子项,并确保它出现在我所有其他UI元素的顶部。然后,当显示面板时,其下面的UI元素无法与之交互。
Scene
|- Canvas
|- Modal Panel
|- UI Button