1. 程式人生 > >unity 編輯器(二)之彈出視窗

unity 編輯器(二)之彈出視窗

彈出對話方塊首先要需要新增選單欄按鈕,來調出視窗

彈出對話方塊

[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後會出現上圖所示文字

以上為彈出視窗相關內容,如有錯誤等歡迎各位大佬指正。