EditorGUILayout中基本控件的使用
using UnityEngine;
using UnityEditor;
public class GUITest : EditorWindow
{
enum EnumType
{
EnumType1,
EnumType2,
}
enum EnumMask
{
EnumMask1,
EnumMask2,
EnumMask3
}
string textField1 = "Text Field 1";
string textField2 = "Text Field 2";
string textArea = "Text Area";
string helpBox = "Help...";
int prefabLayer = 1;
int mask = 1;
int number = 95;
int popupNum = 1;
int[] popupNumArr = new int[3] { 1, 2, 3 };
string[] popupNumNames = new string[3] { "Number1", "Number2", "Number3" };
float sliderValue = 20f;
bool toggleGroup = false;
bool toggle = true;
bool toggle1 = false;
bool foldout = false;
bool foldout1 = false;
Color color = Color.white;
Vector2 vector2 = Vector2.zero;
Vector4 vector4 = Vector4.zero;
Bounds bounds = new Bounds(Vector3.zero, Vector3.zero);
AnimationCurve curve = new AnimationCurve();
EnumType enumType;
EnumMask enumMask;
Transform tran;
void OnGUI()
{
GUILayout.BeginVertical();//开始纵向布局
{
GUILayout.Label("This is Label");
EditorGUILayout.SelectableLabel("SelectableLabel");
GUILayout.Space(2f);//间隔
GUILayout.BeginHorizontal();//开始横向布局
{
//字符文本框
textField1 = EditorGUILayout.TextField(textField1);
textField2 = EditorGUILayout.TextField(textField2);
}
GUILayout.EndHorizontal();//结束横向布局
//数字文本框
number = EditorGUILayout.IntField("Number", number, GUILayout.Width(180f));
//整数弹出选择菜单
popupNum = EditorGUILayout.IntPopup("IntPopup", popupNum, popupNumNames, popupNumArr);
//密码框
EditorGUILayout.PasswordField("password");
//物体层级选择框
prefabLayer = EditorGUILayout.LayerField("Layer:", prefabLayer);
//2D向量
vector2 = EditorGUILayout.Vector2Field("Vector2", vector2);
EditorGUILayout.Separator();//分割(增大间距)
//单选按钮组
toggleGroup = EditorGUILayout.BeginToggleGroup("ToggleGroup", toggleGroup);
{
toggle = EditorGUILayout.Toggle("Toggle", toggle, GUILayout.Width(180f));
toggle1 = EditorGUILayout.Toggle("Toggle1", toggle1, GUILayout.Width(180f));
}
EditorGUILayout.EndToggleGroup();
//包围盒
bounds = EditorGUILayout.BoundsField(bounds);
//动画曲线
curve = EditorGUILayout.CurveField(curve, GUILayout.Height(30f));
//枚举
enumType = (EnumType)EditorGUILayout.EnumPopup("EnumPopup", enumType, GUILayout.Width(240f));
//遮罩枚举
enumMask = (EnumMask)EditorGUILayout.EnumMaskField("EnumMask", enumMask);
//遮罩菜单
mask = EditorGUILayout.MaskField(mask, new string[3] { "mask1", "mask2", "mask3" }, GUILayout.Width(240f));
//Label
EditorGUILayout.PrefixLabel("PrefixLabel");
//折叠标签
foldout = EditorGUILayout.Foldout(foldout, "Foldout");
if (foldout)
{
//显示子组件
}
//检视面板标题栏
/*if (null != Selection.activeGameObject.transform)
{
foldout1 = EditorGUILayout.InspectorTitlebar(foldout1, Selection.activeGameObject.transform);
if (foldout1)
{
//显示子组件
}
}*/
//颜色选取器
color = EditorGUILayout.ColorField(color, GUILayout.Width(150));
//对象
tran = EditorGUILayout.ObjectField("Transform", tran, typeof(Transform), true) as Transform;
//文本区
textArea = EditorGUILayout.TextArea(textArea, GUI.skin.textArea, GUILayout.Height(50f));
EditorGUILayout.HelpBox(helpBox, MessageType.Info);
//滑动条
sliderValue = EditorGUILayout.Slider(sliderValue, 0f, 100f, GUILayout.Width(240f));
//按钮
if (GUILayout.Button("Button"))
{
}
}
GUILayout.EndVertical();//结束纵向布局
}
}
运行效果