小結(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è)試截圖