Editor扩展常用API

  • Post author:
  • Post category:其他



如图

效果图

代码:

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);//      系统默认会添加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

}

}


原文链接:https://blog.csdn.net/qq_57896821/article/details/121264618



版权声明:本文为Liumotor原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。