弹出对话框首先要需要添加菜单栏按钮,来调出窗口

弹出对话框

[MenuItem("Testbtn/windowtest", false,2)]

    staticvoidWindow()

    {
        //第一个参数为窗口名字,第二个为按钮名字默认为create windowclass当前脚本

        ScriptableWizard.DisplayWizard<windowclass>("调整测试","test");

    }

这时候,点击windowtest按钮就会弹出一个窗口,窗口名字为调整测试

unity3d 按钮被点击 unity点击button弹出界面_提示信息

当然,我们可以通过窗口改变一些属性,字段

public string str = "窗口测试";
    void OnWizardCreate()//固定名字,无需调用 监测create按钮的点击,方法执行完会自动关闭
    {
        Debug.Log(str);
}

此时点击test(默认为Creat)按钮,就会输出我们更改后的内容,并且会关闭面板,OnwizardCreat名字固定,绑定的是create按钮,点击unity自动调用的无需我们操作

自己创建按钮并绑定事件

当然,我们是可以自己创建一个按钮,点击后只进行更改等操作而不关闭这个窗口

//第二个为按钮名字默认为create 第三个参数是自己创建按钮名字,不能使用中文
        ScriptableWizard.DisplayWizard<windowclass>("调整测试","test", "OtherButton");                               
//提示信息:
void OnWizardOtherButton() //自己创建的button,执行后不会关闭
     {
Debug.Log("自己创建的按钮");
}

这时候,我们可能还想再添加一个功能,就是每次更改属性等内容是unity能提示我们,一来告诉我们更改了而来防止错误操作,很明显是要实时监测的,我们创建脚本中,有update方法,那么编辑器能不能也实时监测呢?当然是可以的

void OnWizardUpdate()
    {
        Debug.Log("--->>");
        errorString = null;
        helpString = null;
        if (str == "error")
            errorString = "改变属性值---";//信息修改为error后,就会一直显示
        else
            helpString = "help:已经改变";  //帮助信息只有方法执行后才会输出
    }

其中,errorstring是错误信息,达到条件后会输出该值。helpString是提示信息。

OnWizardUpdate 方法是当面板调出,改变字段上的值会自动调用一次

unity还提供了一种提示,在窗口内通过OnGUI绘制文本提示,方法如下:

//提示信息。,几秒后会自动关闭
        ShowNotification(new GUIContent("自己做的按钮点击了"));

效果为:

unity3d 按钮被点击 unity点击button弹出界面_unity3d 按钮被点击_02

我这里是将该操作绑定在自己创建的按钮方法内,所以点击otherbutton后会出现上图所示文本