弹出对话框首先要需要添加菜单栏按钮,来调出窗口
弹出对话框
[MenuItem("Testbtn/windowtest", false,2)]
staticvoidWindow()
{
//第一个参数为窗口名字,第二个为按钮名字默认为create windowclass当前脚本
ScriptableWizard.DisplayWizard<windowclass>("调整测试","test");
}
这时候,点击windowtest按钮就会弹出一个窗口,窗口名字为调整测试
当然,我们可以通过窗口改变一些属性,字段
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("自己做的按钮点击了"));
效果为:
我这里是将该操作绑定在自己创建的按钮方法内,所以点击otherbutton后会出现上图所示文本