累了不多说 (大家可以将代码复制可以看的更清楚更明白)
如图文章来源:https://www.toymoban.com/news/detail-513819.html
效果图
关于效果图最后它的代码我隐藏掉了如何想看看可以自行打开文章来源地址https://www.toymoban.com/news/detail-513819.html
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class Mybianyi : EditorWindow
{
string PasswordField = "";
string m_textArea = "";
float sliders = 0;
int slidera = 0;
string BeginToggleGroup = "BeginToggleGroup";
bool ToggleGroup = false;
string Textfield = "";
bool fg = false;
float sum = 0;
int count = 0;
string tag = "aaa";
int Layerfield=0;
string[] pathname = new string[] { "All", "Asset", "..." };
float minVal = 1;
float maxVal = 2;
float minLimit = -5;
float maxLimit = 5;
static Vector3 center = new Vector3(1, 2, 3);
static Vector3 size1 = new Vector3(1, 2, 3);
Bounds _bounds = new Bounds(center, size1);
Color m_color = Color.white;
AnimationCurve m_curve = AnimationCurve.Linear(0, 0, 10, 10);
Vector2 size = new Vector2(100,100);
int flags = 0;
string[] options = new string[] { "CanJump", "CanShoot", "CanSwim" ,"Canabc","Canacc"};
GameObject game ;
bool showFoldout;
Vector2 m_vector2 = new Vector2();
Vector3 m_vector3 = new Vector3();
Vector4 m_vector4 = new Vector4();
Transform selectedTransform;
GameObject selectedGameObject;
bool fold;
bool fold2;
[MenuItem("MyWindow/Window")]
static void window()
{
Mybianyi mybianyi = GetWindow<Mybianyi>();
mybianyi.Show();
}
private void OnGUI()
{
// GUILayout.Width 控制在窗口中物体所在的宽
// GUILayout.Height 控制在窗口中物体所在的高
//它们的返回的类型为GUILayoutOption
#region GUILayout.Label 提示语句
GUILayout.Label("我的编译器(My compiler)", GUILayout.Width(50), GUILayout.Height(10)); //提示语句
#endregion
#region GUILayout.Button( 按钮
GUILayout.Label("按钮");
if( GUILayout.Button("按钮", GUILayout.Width(40), GUILayout.Height(40)))
{
}
#endregion
#region GUILayout.TextField 文本
GUILayout.Label("文本(可以输入)");
Textfield = GUILayout.TextField(Textfield);//单行
//参数2 maxLength 最大有效长度
// Textfield = GUILayout.TextField(Textfield,5);
#endregion
#region GUILayout.Space 空行
//参数为float类型代表空行的距离
GUILayout.Space(10);
#endregion
#region EditorGUILayout.Toggle 开关(跟Toggle一样)
fg = EditorGUILayout.Toggle("Toggle", fg);//开关
#endregion
#region GUILayout.BeginHorizontal 横向
GUILayout.BeginHorizontal();//可以在里面存放多个如果不规定大小系统会平均分配大小
GUILayout.Button("按钮");
Textfield = GUILayout.TextField(Textfield);
GUILayout.EndHorizontal();//结束语一定要有
#endregion
#region GUILayout.BeginVertical 纵向
GUILayout.BeginVertical();//可以在里面存放多个如果不规定大小系统会平均分配大小
GUILayout.Button("按钮");
Textfield = GUILayout.TextField(Textfield);
GUILayout.EndVertical();//结束语一定要有
#endregion
#region GUILayout.HorizontalSlider(横) GUILayout.VerticalSlider(纵) Slider(分横纵 上横下纵)
sum = GUILayout.HorizontalSlider(sum, 0, 10);
// sum = GUILayout.VerticalSlider(sum, 0, 10);
GUILayout.Space(20);
#endregion
#region EditorGUILayout.Popup 下拉
count = EditorGUILayout.Popup("下拉:",count,pathname);
#endregion
#region GUILayout.BeginScrollView 滑动列表
//两个true可以让横纵两条线显示出了
//两个false可以让横纵两条线不显示出来
size = GUILayout.BeginScrollView(size,true,true);
GUILayout.EndScrollView();
#endregion
#region EditorGUILayout.BoundsField (边界输入) EditorGUILayout.ColorField(颜色输入) EditorGUILayout.CurveField(曲线输入) 输入框
//BoundsField 边界输入框
_bounds = EditorGUILayout.BoundsField("BoundsField:", _bounds);
//ColorField 颜色输入框
m_color = EditorGUILayout.ColorField("ColorField:", m_color);
//CurveField 曲线输入框
m_curve = EditorGUILayout.CurveField("CurveField:", m_curve);
#endregion
#region EditorGUILayout.TagField tag(标签)
tag = EditorGUILayout.TagField("TagField:", tag);
#endregion
#region EditorGUILayout.LayerField(可以获取所有的Layer)
//Layerfield 可以获取所有的Layer
Layerfield = EditorGUILayout.LayerField("LayerField:", Layerfield);
#endregion
#region EditorGUILayout.MaskField (下拉可以多选)
flags = EditorGUILayout.MaskField("MaskField:", flags, options);
//Debug.Log(flags);// 除了数组的第一个是1 后面全是2的幂(幂为对应的下标) 如果多选它们会相加 系统默认会添加Nothing (对应的值0) 和Everything(-1)
#endregion
#region EditorGUILayout.ObjectField(选择物体)
game = (GameObject) EditorGUILayout.ObjectField(game,typeof(GameObject),true);//typeof(类型) 确定好类型系统会自动帮我找到所有的关于这个类型的物体
#endregion
#region EditorGUILayout.Foldout 折叠
showFoldout = EditorGUILayout.Foldout(showFoldout, "折叠子物体:");
if (showFoldout)
{
EditorGUI.indentLevel++;//缩进级别
EditorGUILayout.LabelField("折叠块内容1");
EditorGUI.indentLevel++;
EditorGUILayout.LabelField("折叠块内容2");
EditorGUI.indentLevel--;
EditorGUI.indentLevel--;
EditorGUILayout.LabelField("折叠块内容3");
}
#endregion
#region EditorGUILayout.BeginToggleGroup(开关)
ToggleGroup = EditorGUILayout.BeginToggleGroup(BeginToggleGroup, ToggleGroup);
Textfield = GUILayout.TextField(Textfield);
EditorGUILayout.EndToggleGroup();
#endregion
#region GUILayout.FlexibleSpace(布局之间左右对齐)
EditorGUILayout.BeginHorizontal();//开始最外层横向布局
GUILayout.FlexibleSpace();//布局之间左右对齐
GUILayout.Label("-----------------分割线-----------------");
GUILayout.FlexibleSpace();//布局之间左右对齐
EditorGUILayout.EndHorizontal();
#endregion
#region EditorGUILayout.HelpBox(提示语句)
EditorGUILayout.HelpBox("HelpBox Error:", MessageType.Error);//红色错误号
EditorGUILayout.HelpBox("HelpBox Info:", MessageType.Info);//白色提示号
EditorGUILayout.HelpBox("HelpBox None:", MessageType.None);//解释号
EditorGUILayout.HelpBox("HelpBox Warning:", MessageType.Warning);//黄色警告号
#endregion
#region EditorGUILayout.Slider(Slider)
sliders = EditorGUILayout.Slider("Slider:",sliders,0,10);
#endregion
#region EditorGUILayout.TextArea(text 自适应高)
m_textArea = EditorGUILayout.TextArea(m_textArea);//可以多行
#endregion
#region GUILayout.PasswordField(可以改变成对应的符号)
EditorGUILayout.BeginHorizontal();
GUILayout.Label("密码text", GUILayout.Width(60));
PasswordField = GUILayout.PasswordField(PasswordField, '*');//可以改变成对应的符号
EditorGUILayout.EndHorizontal();
#endregion
#region EditorGUILayout.Vector2Field EditorGUILayout.Vector3Field EditorGUILayout.Vector4Field
m_vector2 = EditorGUILayout.Vector2Field("Vector2:", m_vector2);
m_vector3 = EditorGUILayout.Vector3Field("Vector3:", m_vector3);
m_vector4 = EditorGUILayout.Vector4Field("Vector4:", m_vector4);
#endregion
#region EditorGUILayout.SelectableLabel (可以复制粘贴)
EditorGUILayout.SelectableLabel("SelectableLabel");
#endregion
#region EditorGUILayout.MinMaxSlider (取值范围)
EditorGUILayout.LabelField("Min Val:", minVal.ToString());
EditorGUILayout.LabelField("Max Val:", maxVal.ToString());
EditorGUILayout.MinMaxSlider("MinMaxSlider", ref minVal, ref maxVal, minLimit, maxLimit);
//现在最小 现在最大 最小长度 最大长度
#endregion
#region EditorGUILayout.IntSlider(只能是整数)
slidera = EditorGUILayout.IntSlider("IntSlider:", slidera, 1, 10);
#endregion
#region EditorGUILayout.InspectorTitlebar(将物体返回回来)
//Transform selectedTransform = Selection.activeGameObject.transform;
//GameObject selectedGameObject = Selection.activeGameObject;//选择物体(GameObject)
//fold = EditorGUILayout.InspectorTitlebar(fold, selectedTransform);
//fold2 = EditorGUILayout.InspectorTitlebar(fold2, selectedGameObject);
#endregion
}
}
到了这里,关于Unity编辑器基础 EditorGUILayout (大部分用法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!