Unity編輯器擴(kuò)展基礎(chǔ)二、EditorGUILayout(二)

小結(jié):

1、類似BeginFadeGroup、BeginHorizontal布局函數(shù)都有與之對(duì)應(yīng)的EndFadeGroup、EndHorizontal,他們是一一對(duì)應(yīng)的;

2、創(chuàng)建ToggleGroup,關(guān)閉之后該ToggleGroup下的內(nèi)容都不能在該組下面修改。

3、BeginScrollView返回值是該滑動(dòng)區(qū)域的位置,需要將它存下來,才能改變BeginScrollView的位置。

using UnityEngine;
using UnityEditor;
using UnityEditor.AnimatedValues;

/// <summary>
/// Unity 5.6
/// </summary>
public class EditorGUILayoutExample : EditorWindow
{
    #region BeginFadeGroup
    AnimBool m_ShowExtraFields;
    string m_String;
    Color m_Color = Color.white;
    int m_Number = 0;
    #endregion

    #region BeginScrollView
    Vector2 scrollPos;
    string m_content = "";
    string t = "這 是 一 個(gè) 測(cè) 試 Scroll view 的 文 本 !\n";
    #endregion

    #region BeginToggleGroup
    bool[] pos = new bool[3] { true, true, true };

    bool posGroupEnabled = true;
    #endregion

     #region Foldout
    bool showFoldout = true;
    #endregion

    [MenuItem("EditorGUILayout/EditorGUILayoutExample")]
    static void Init()
    {
        EditorGUILayoutExample window = (EditorGUILayoutExample)EditorWindow.GetWindow(typeof(EditorGUILayoutExample));
        window.Show();
    }

    void OnEnable()
    {
        #region  BeginFadeGroup
        m_ShowExtraFields = new AnimBool(true);//創(chuàng)建一個(gè)AnimBool對(duì)象,true是默認(rèn)顯示。
        m_ShowExtraFields.valueChanged.AddListener(Repaint);//監(jiān)聽重繪
        #endregion
    }
    void OnGUI()
    {
        #region BeginFadeGroup
        m_ShowExtraFields.target = EditorGUILayout.ToggleLeft("顯示折疊內(nèi)容", m_ShowExtraFields.target);//選擇框在左邊的開關(guān)
        m_ShowExtraFields.target = EditorGUILayout.Toggle("顯示折疊內(nèi)容", m_ShowExtraFields.target);//選擇框在右邊的開關(guān)
        //創(chuàng)建帶漸顯動(dòng)畫的折疊塊 返回值bool,參數(shù)float
        if (EditorGUILayout.BeginFadeGroup(m_ShowExtraFields.faded))
        {
            EditorGUI.indentLevel++;//縮進(jìn)深度增加,以下的GUI會(huì)增加縮進(jìn)

            EditorGUILayout.LabelField("ColorColorColorColorColorColorColorColorColorColor");//標(biāo)簽欄

            EditorGUILayout.PrefixLabel("ColorColorColorColorColorColorColorColorColorColor");//前綴標(biāo)簽
            m_Color = EditorGUILayout.ColorField(m_Color);

            EditorGUILayout.PrefixLabel("Text");
            m_String = EditorGUILayout.TextField(m_String);//文本框

            EditorGUILayout.PrefixLabel("Number");
            m_Number = EditorGUILayout.IntSlider(m_Number, 0, 10);//Int滑動(dòng)條

            EditorGUI.indentLevel--;//縮進(jìn)深度減少,以下的GUI會(huì)減少縮進(jìn)
        }
        EditorGUILayout.EndFadeGroup();
        #endregion
  #region Foldout
        showFoldout = EditorGUILayout.Foldout(showFoldout, "折疊子物體:");
        if (showFoldout)
        {
            EditorGUI.indentLevel++;
            EditorGUILayout.LabelField("折疊塊內(nèi)容1");
            EditorGUI.indentLevel++;
            EditorGUILayout.LabelField("折疊塊內(nèi)容2");
            EditorGUI.indentLevel--;
            EditorGUI.indentLevel--;
            EditorGUILayout.LabelField("折疊塊內(nèi)容3");
        }
        #endregion

        #region BeginHorizontal 水平布局
        Rect r = EditorGUILayout.BeginHorizontal("Button");
        if (GUI.Button(r, GUIContent.none))
            Debug.Log("Go here");
        GUILayout.Label("I'm inside the button");
        GUILayout.Label("So am I");
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        GUILayout.Label("第一個(gè)內(nèi)容");
        GUILayout.Label("第二個(gè)內(nèi)容");
        if (GUILayout.Button("第三個(gè)按鈕"))
        {
            Debug.Log("GUILayout的按鈕");
        }
        EditorGUILayout.EndHorizontal();
        #endregion

        #region BeginVertical 垂直布局
        EditorGUILayout.BeginVertical();
        GUILayout.Label("第一個(gè)內(nèi)容");
        GUILayout.Label("第二個(gè)內(nèi)容");
        if (GUILayout.Button("第三個(gè)按鈕"))
        {
            Debug.Log("GUILayout的按鈕");
        }
        EditorGUILayout.EndVertical();
        #endregion

        #region BeginScrollView
        //需要將返回值賦值到臨時(shí)變量,不然拖不動(dòng)
        //可以添加GUILayoutOption參數(shù)控制大小
        scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Width(200), GUILayout.Height(100));
        GUILayout.Label(m_content);
        EditorGUILayout.EndScrollView();

        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("添加內(nèi)容"))
            m_content += t;
        if (GUILayout.Button("清空內(nèi)容"))
            m_content = "";
        EditorGUILayout.EndHorizontal();
        #endregion

        #region BeginToggleGroup

        posGroupEnabled = EditorGUILayout.BeginToggleGroup("ToggleGroup", posGroupEnabled);
        EditorGUILayout.BeginVertical();
        pos[0] = EditorGUILayout.Toggle("Toggle1", pos[0]);
        pos[1] = EditorGUILayout.Toggle("Toggle2", pos[1]);
        pos[2] = EditorGUILayout.Toggle("Toggle3", pos[2]);
        if (GUILayout.Button("添加內(nèi)容"))
            m_content += t;
        m_String = EditorGUILayout.TextField(m_String);
        EditorGUILayout.EndVertical();
        EditorGUILayout.EndToggleGroup();

        #endregion

        //畫一個(gè)居中的分割線
        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        GUILayout.Label("-----------------分割線-----------------");
        GUILayout.FlexibleSpace();
        EditorGUILayout.EndHorizontal();

    }

}

以上就是EditorGUILayout中各種布局函的的用法了。

效果圖:

測(cè)試截圖
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自http://www.itdecent.cn/p/a4fefb434652一、常見類1、RACSiganl ...
    君莫嘆人生如若初見閱讀 1,456評(píng)論 0 18
  • 最近看了這部電影,大家都在彈奏一曲,自己也在彈奏。分享大家 這首歌曲是降B大調(diào),左手伴奏應(yīng)用了八度彈奏。旋律應(yīng)用3...
    音符之旅閱讀 406評(píng)論 0 4
  • 從前不曾接觸過李碧華的作品,只道是癡男怨女的愛恨情仇總是讓人唏噓嘆惋。 向來害怕宿命式的故事,它總是讓人有一種無力...
    塵煙逝水閱讀 1,072評(píng)論 0 0
  • 最近開始速凍模式,悲傷的故事最配寒風(fēng)。 第一個(gè)故事: 我小的時(shí)候家里養(yǎng)了一條狗,白色的,小小的,我很愛它,家里人也...
    江上楓生閱讀 3,616評(píng)論 0 0
  • 如果刻在石頭上 就成了 永遠(yuǎn)的悲傷 那么 如果需要一萬(wàn)次努力 我寧愿堅(jiān)持 一萬(wàn)零一次希望
    鎏金歲月labor閱讀 258評(píng)論 0 3

友情鏈接更多精彩內(nèi)容