Unity編輯器擴展基礎(chǔ)五主穗、GUI

一、靜態(tài)屬性

1、顏色

改變背景顏色:GUI.backgroundColor

改變內(nèi)容顏色: GUI.contentColor

改變內(nèi)容改變內(nèi)容和背景顏色: GUI.color

        //改變背景顏色
        GUI.backgroundColor = Color.yellow;
        GUI.Button(new Rect(0, 0, 200, 30), "改變背景顏色");
        GUI.backgroundColor = Color.white;
        GUI.Button(new Rect(0, m_interval, 200, 30), "改變背景顏色");

        //改變內(nèi)容顏色
        GUI.contentColor = Color.yellow;
        GUI.Button(new Rect(0, m_interval * 2, 200, 30), "改變內(nèi)容顏色");
        GUI.contentColor = Color.white;
        GUI.Button(new Rect(0, m_interval * 3, 200, 30), "改變內(nèi)容顏色");

        //改變內(nèi)容和背景顏色
        GUI.color = Color.yellow;
        GUI.Button(new Rect(0, m_interval * 4, 200, 30), "改變內(nèi)容和背景顏色");
        GUI.color = Color.white;
        GUI.Button(new Rect(0, m_interval * 5, 200, 30), "改變內(nèi)容和背景顏色");
image.gif
image
image.gif

?

2胆绊、文本輸入框:GUI.TextField

GUI.changed:如果有輸入控件的值發(fā)生改變,就會返回true欧募。

        stringToEdit = GUI.TextField(new Rect(0, m_interval * 6, 200, 20), stringToEdit, 25);
        if (GUI.changed)
            Debug.Log("GUI.TextField 內(nèi)容有修改");
image.gif

3压状、 GUI的激活狀態(tài):GUI.enabled

GUI.enabled控制之后的GUI的激活狀態(tài),未激活的GUI不能接收事件跟继。

toggleGroup = GUI.Toggle(new Rect(0, m_interval * 7, 200, 20), toggleGroup, "ToggleGroup");
        GUI.enabled = toggleGroup;
        if (GUI.Button(new Rect(0, m_interval * 8, 200, 30), "測試toggleGroup的按鈕1"))
        {
            Debug.Log("點擊了button1");
        }
        if (GUI.Button(new Rect(0, m_interval * 9, 200, 30), "測試toggleGroup的按鈕2"))
        {
            Debug.Log("點擊了button2");
        }
image.gif
image
image.gif

?

4种冬、GUI.depth

5、GUI.matrix

6舔糖、GUI.skin

二娱两、靜態(tài)方法

1、GUI.Label

 GUI.Label(new Rect(210, 10, 100, 20), "Hello World!");
image.gif

2金吗、 GUI.Box

  GUI.Box(new Rect(210, 50, 50, 50), "A BOX");
image.gif

3十兢、GUI.Button

if (GUI.Button(new Rect(210, 110, 70, 30), "A button"))
            Debug.Log("點擊了按鈕!");
image.gif

4辽聊、 GUI.BeginGroup

        m_beginGroupRect = new Rect(0, 0, Screen.width / 2, Screen.height / 2);
        //BeginGroup 可以用來管理UI纪挎,UGUI的Panel,組里面的UI元素是相對于組創(chuàng)建的跟匆。
        GUI.BeginGroup(m_beginGroupRect);
        GUI.Box(new Rect(m_beginGroupRect), "自適應(yīng)的 BeginGroup 測試异袄!");
        GUI.EndGroup();
image.gif

5、GUI.BeginScrollView

     //滑動區(qū)域
        scrollPosition = GUI.BeginScrollView(new Rect(10, 10, 200, 200), scrollPosition, new Rect(0, 0, 220, 200));
        GUI.Button(new Rect(0, 0, 100, 20), "Top-left");
        GUI.Button(new Rect(120, 0, 100, 20), "Top-right");
        GUI.Button(new Rect(0, 180, 100, 20), "Bottom-left");
        GUI.Button(new Rect(120, 180, 100, 20), "Bottom-right");
        GUI.EndScrollView();
image.gif
image
image.gif

?

6玛臂、 GUI.DrawTexture烤蜕、GUI.DrawTextureWithTexCoords

        //畫一個圖片
        if (aTexture)
        {
            GUI.DrawTexture(new Rect(10, 110, 110, 110), aTexture, ScaleMode.StretchToFill, true, 10.0F);
            GUI.DrawTextureWithTexCoords(new Rect(10, 240, 110, 110), aTexture, new Rect(10, 240, 110, 110), false);
        }
image.gif

7封孙、 GUI.SetNextControlName

為下一個控件設(shè)置控件名稱。

8讽营、 GUI.FocusControl

通過控件名稱設(shè)置聚焦虎忌,設(shè)置聚焦時參數(shù)為控件名稱,取消聚焦時參數(shù)為null橱鹏。(EditorGUILayout.TextField 控件如果被聚焦膜蠢,返回的值修改之后,不會馬上刷新莉兰,需要取消聚焦才能看到刷新之后的值挑围。)

   GUI.SetNextControlName("MyTextField");
        username = GUI.TextField(new Rect(10, 410, 100, 20), username);
        pwd = GUI.TextField(new Rect(10, 440, 100, 20), pwd);
        if (GUI.Button(new Rect(10, 470, 80, 20), "設(shè)置聚焦"))
            GUI.FocusControl("MyTextField");

        if (GUI.Button(new Rect(10, 500, 80, 20), "取消聚焦"))
            GUI.FocusControl(null);//取消聚焦
image.gif

9、GUI.HorizontalSlider糖荒、GUI.VerticalSlider杉辙、GUI.HorizontalScrollbar、GUI.VerticalScrollbar

        hSliderValue = GUI.HorizontalSlider(new Rect(210, 150, 100, 30), hSliderValue, 0.0F, 10.0F);
        vSliderValue = GUI.VerticalSlider(new Rect(210, 170, 100, 30), vSliderValue, 10.0F, 0.0F);
        hSValue = GUI.HorizontalScrollbar(new Rect(210, 210, 100, 30), hSValue, 1.0F, 0.0F, 10.0F);
        vSValue = GUI.VerticalScrollbar(new Rect(210, 230, 100, 30), vSValue, 1.0F, 10.0F, 0.0F);
image.gif

10捶朵、GUI.GetNameOfFocusedControl

獲取當(dāng)前聚焦的控件名稱蜘矢,如果沒有聚焦或者沒有控件命名返回空字符串。

11综看、GUI.Window品腹、 GUI.FocusWindow、GUI.DragWindow

GUI.BringWindowToBack寓搬、GUI.BringWindowToFront

 //GUI.depth珍昨、GUI.BringWindowToBack、GUI.BringWindowToFront都可以改變窗口的層級
    //GUI.BringWindowToBack  GUI.BringWindowToFront
    private Rect windowRect = new Rect(20, 20, 120, 120);
    private Rect windowRect2 = new Rect(80, 20, 120, 120);
    private Rect windowRect3 = new Rect(150, 20, 120, 120);

    // GUI.depth 
    int guiDepth1 = 0;
    int guiDepth2 = 0;

    //
    string m_focusedControlName = "";
    void OnGUI()
    {
        windowRect = GUI.Window(0, windowRect, DoMyWindow1, "第一個窗口");
        windowRect2 = GUI.Window(1, windowRect2, DoMyWindow2, "第二個窗口");
        windowRect3 = GUI.Window(2, windowRect3, DoMyWindow3, "第三個窗口");
    }
    void DoMyWindow1(int windowID)
    {
       // GUI.depth = guiDepth1;
        if (GUI.Button(new Rect(10, 20, 100, 20), "Window1"))
        {
            //GUI.BringWindowToBack(1);//將窗口id為1的窗口設(shè)置到最后
            //guiDepth1 = 1;
            //guiDepth2 = 0;
            //GUI.BringWindowToFront(1);//將窗口id為1的窗口設(shè)置到最前
            GUI.FocusWindow(1);  //聚焦到id為1的窗口
        }
        //DragWindow 可拖動的窗口
        GUI.DragWindow(new Rect(0, 0, 10000, 20));
    }
    void DoMyWindow2(int windowID)
    {
        //GUI.depth = guiDepth2;
        if (GUI.Button(new Rect(10, 20, 100, 20), "Window2"))
        {
            //GUI.BringWindowToBack(2);
            //guiDepth1 = 0;
            //guiDepth2 = 1;
            GUI.BringWindowToFront(2);
        }

        GUI.DragWindow(new Rect(0, 0, 10000, 20));
    }
    void DoMyWindow3(int windowID)
    {
       // GUI.depth = guiDepth2;
        if (GUI.Button(new Rect(10, 20, 100, 20), "Window3"))
        {
            //GUI.BringWindowToBack(0);
            //guiDepth1 = 0;
            //guiDepth2 = 1;
            GUI.BringWindowToFront(0);

        }
        GUI.DragWindow(new Rect(0, 0, 10000, 20));
    }
image.gif
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末句喷,一起剝皮案震驚了整個濱河市镣典,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌唾琼,老刑警劉巖兄春,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锡溯,居然都是意外死亡赶舆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門祭饭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芜茵,“玉大人,你說我怎么就攤上這事倡蝙【糯” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長猪钮。 經(jīng)常有香客問我品山,道長,這世上最難降的妖魔是什么烤低? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任肘交,我火速辦了婚禮,結(jié)果婚禮上扑馁,老公的妹妹穿的比我還像新娘涯呻。我一直安慰自己,他們只是感情好檐蚜,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布魄懂。 她就那樣靜靜地躺著,像睡著了一般闯第。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缀拭,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天咳短,我揣著相機與錄音,去河邊找鬼蛛淋。 笑死咙好,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的褐荷。 我是一名探鬼主播勾效,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼叛甫!你這毒婦竟也來了层宫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤其监,失蹤者是張志新(化名)和其女友劉穎萌腿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抖苦,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡毁菱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了锌历。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贮庞。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖究西,靈堂內(nèi)的尸體忽然破棺而出窗慎,到底是詐尸還是另有隱情,我是刑警寧澤怔揩,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布捉邢,位于F島的核電站脯丝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伏伐。R本人自食惡果不足惜宠进,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藐翎。 院中可真熱鬧材蹬,春花似錦、人聲如沸吝镣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽末贾。三九已至闸溃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拱撵,已是汗流浹背辉川。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拴测,地道東北人乓旗。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像集索,于是被迫代替她去往敵國和親屿愚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容