unity 編輯器(二)之彈出視窗
阿新 • • 發佈:2019-01-08
彈出對話方塊首先要需要新增選單欄按鈕,來調出視窗
彈出對話方塊
[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後會出現上圖所示文字
以上為彈出視窗相關內容,如有錯誤等歡迎各位大佬指正。