1.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
//窗口类需要继承自EditorWindow
public class MyWindow : EditorWindow
{
//窗口需要一个打开的方式
//MenuItem属性会在编辑器菜单上创建对应的选项
//点击选项即可创建窗口
[MenuItem("Window/My Window")]
public static void ShowWindow()
{
//调用EditorWindow的静态函数GetWindow
//创建对应的窗口
//ps:该函数有多个重载
EditorWindow.GetWindow(typeof(MyWindow));
}
private void OnGUI()
{
//窗口绘制的实际代码在这里
}
}
因为OnGUI中没有写代码,所以是一个空的窗口
2.
在OnGUI()中可以使用UnityGUI中GUI和GUILayout类,还可以使用编辑器组件EditorGUI 和 EditorGUILayout 类。
现在添加如下内容:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
//窗口类需要继承自EditorWindow
public class MyWindow : EditorWindow
{
string myString = "Hello World";
bool groupEnabled;
bool myBool = true;
float myFloat = 1.23f;
//窗口需要一个打开的方式
//MenuItem属性会在编辑器菜单上创建对应的选项
//点击选项即可创建窗口
[MenuItem("Window/My Window")]
public static void ShowWindow()
{
//调用EditorWindow的静态函数GetWindow
//创建对应的窗口
//ps:该函数有多个重载
EditorWindow.GetWindow(typeof(MyWindow));
}
private void OnGUI()
{
//窗口绘制的实际代码在这里
GUILayout.Label("Base Settings", EditorStyles.boldLabel);
myString = EditorGUILayout.TextField("TextField", myString);
groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Settings", groupEnabled);
myBool = EditorGUILayout.Toggle("Toggle", myBool);
myFloat = EditorGUILayout.Slider("Slider", myFloat, -3, 3);
EditorGUILayout.EndToggleGroup();
}
}
会创建如下的窗口
涉及到EditorWindow,EditorStyle,EditorGUILayout,GUILayout等类、GenericMenu 通用菜单
EditorWindow
静态变量
当前已获得键盘焦点的 EditorWindow。(只读) | |
当前在鼠标光标下的 EditorWindow。(只读) |
变量
窗口是否会在场景每次发生变化时自动重绘? | |
此窗口是否已最大化? | |
此窗口的最大大小。 | |
此窗口的最小大小。 | |
窗口在屏幕空间中的理想位置。 | |
用于绘制 EditorWindow 标题的 GUIContent。 | |
检查是否已在此编辑器窗口的 GUI 中收到 MouseEnterWindow 和 MouseLeaveWindow 事件。 | |
检查是否已在此编辑器窗口的 GUI 中收到 MouseMove 事件。 |
公共函数
标记所有弹出窗口的开始区域。 | |
关闭编辑器窗口。 | |
关闭由 EditorWindow.BeginWindows 开始的窗口组。 | |
将键盘焦点移动到另一个 EditorWindow。 | |
停止显示通知消息。 | |
重绘窗口。 | |
将事件发送到窗口。 | |
显示 EditorWindow 窗口。 | |
显示包含下拉菜单和样式的窗口。 | |
在辅助窗口中显示编辑器窗口。 | |
显示通知消息。 | |
使用弹出式框架显示编辑器窗口。 | |
将 EditorWindow 显示为浮动实用程序窗口。 |
静态函数
聚焦发现的第一个指定类型的 EditorWindow(如果已打开)。 | |
返回当前屏幕上第一个 t 类型的 EditorWindow。 | |
返回当前屏幕上第一个 t 类型的 EditorWindow。 |
消息
在新窗口打开时调用。 | |
调用 OnDestroy 以关闭 EditorWindow 窗口。 | |
在窗口获得键盘焦点时调用。 | |
在此处实现您自己的 Editor GUI。 | |
处理程序,用于在层级视图中的对象或对象组发生更改时发送的消息。 | |
OnInspectorUpdate 以每秒 10 帧的速度调用,以便检视面板有机会进行更新。 | |
在窗口失去键盘焦点时调用。 | |
处理程序,用于在项目状态发生更改时发送的消息。 | |
每当选择发生更改时调用。 | |
在所有可见窗口上每秒调用多次。 |
继承的成员
变量
该对象应该隐藏、随场景一起保存还是由用户修改? | |
对象的名称。 |
公共函数
返回对象的实例 ID。 | |
返回 GameObject 的名称。 |
静态函数
删除 GameObject、组件或资源。 | |
立即销毁对象 /obj/。强烈建议您改用 Destroy。 | |
在加载新的 Scene 时,请勿销毁 Object。 | |
返回第一个类型为 type 的已加载的激活对象。 | |
返回所有类型为 type 的已加载的激活对象的列表。 | |
克隆 original 对象并返回克隆对象。 | |
创建脚本化对象的实例。 |
运算符
该对象是否存在? | |
比较两个对象是否引用不同的对象。 | |
比较两个对象引用,判断它们是否引用同一个对象。 |
消息
当 ScriptableObject 脚本启动时调用此函数。 | |
当脚本化对象超出范围时调用此函数。 | |
当对象加载时调用此函数。 |