UnityEditor 学习记录
(编辑器可视化窗体)EditorWindow
@创建窗体
@关键代码
1.创建继承EditorWindow的类
//创建继承EditorWindow的类
public class _DisplayUI : EditorWindow
{
}
@进入窗体
@关键代码
1.编写进入EditorWindow的类窗体的方法
static void Init()
{
_DisplayUI window = (_DisplayUI)EditorWindow.GetWindow(typeof(_DisplayUI));
window.Show();
}
2.使用MenuItem特性将方法放在Unity菜单栏下
//菜单栏的设置
[MenuItem("MyWindow/My Window")]
static void Init()
{
// Get existing open window or if none, make a new one:
_DisplayUI window = (_DisplayUI)EditorWindow.GetWindow(typeof(_DisplayUI));
window.Show();
}
@效果展示
完成上面两部后,在菜单栏就可以找到自定义的功能选项,通过选项就可以进入EditorWindow了,注意MenuItem特性方法所在脚本必须放在名为Edtior的文件夹下
打开的窗体:
完成
至此就可以通过EditorGUILayou里的方法来定义我们自己的窗体了!
(窗体界面设置类)EditorGUILayout
@窗体的基本组件
(方法名)EditorGUILayout.ColorField(调色盘选项)
@效果展示
== 调色盘效果 ==
@关键代码
matColor = EditorGUILayout.ColorField("New Color", matColor);
@官方样例
using UnityEngine;
using UnityEditor;
// Change the color of the selected GameObjects.
public class ExampleClass : EditorWindow
{
Color matColor = Color.white;
[MenuItem("Examples/Mass Color Change")]
static void Init()
{
EditorWindow window = GetWindow(typeof(ExampleClass));
window.Show();
}
void OnGUI()
{
matColor = EditorGUILayout.ColorField("New Color", matColor);
if (GUILayout.Button("Change!"))
ChangeColors();
}
private void ChangeColors()
{
if (Selection.activeGameObject)
foreach (GameObject t in Selection.gameObjects)
{
Renderer rend = t.GetComponent<Renderer>();
if (rend != null)
rend.sharedMaterial.color = matColor;
}
}
}
@官方API
public static Color ColorField(Color value, params GUILayoutOption[] options);
public static Color ColorField(string label, Color value, params GUILayoutOption[] options);
public static Color ColorField(GUIContent label, Color value, params GUILayoutOption[] options);
public static Color ColorField(GUIContent label, Color value, bool showEyedropper, bool showAlpha, bool hdr, ColorPickerHDRConfig hdrConfig, params GUILayoutOption[] options