【Unity编辑器】EditorWindow的使用

文章目录

  • 前言
  • 创建一个Editor窗口
    • Unity引擎目前中焦的窗口
    • Editor窗口鼠标悬停
    • Editor窗口场景编辑更改监听
    • 主窗口停靠下最大化窗口
    • 设置窗口的小图标
    • 获取中焦窗口
    • Window.ShowNotification
    • Window.SendEvent
    • EditorWindow.OnHierarchyChange()
    • EditorWindow.OnProjectChange()

前言

学习下编辑器的写法,主要可以用来做一些流程化的东西,帮助自己提高下工作效率

创建一个Editor窗口

在Unity中都是基于窗口进行工作的。Game窗口用查看游戏运行的实际情况,Scene窗口用来看游戏场景等等,窗口就是Unity引擎工作流的核心灵魂。

写创建一个cs文件,命名ExcelWindow.cs,编写代码如下

using UnityEditor; 
public class ExcelWindow : EditorWindow
{
   
   [MenuItem("Excel/ExcelWindow")]
   private static void ShowExcelProcessWindow()
   {
   
       var window = GetWindow<ExcelWindow>();
       window.Show();
   }
}

MenuItem特性能直接在Unity的菜单栏中加上一个路径Excel/ExcelWindow,再加上通过GetWindow方法得到对应Window的实例,调用Show方法来进行窗口的显示。
【Unity编辑器】EditorWindow的使用_第1张图片

Unity引擎目前中焦的窗口

通过EditorWindow自己的静态字段focusedWindow来获取中焦窗口,在EditorWindow类添加如下代码

private void OnGUI()
{
   
     EditorGUILayout.LabelField(EditorWindow.focusedWindow.ToString());
}

这样就能在Excel面板上获取当前中焦的参考,OnGUI是Unity自带的GUI刷新函数,会一直进行刷新。
【Unity编辑器】EditorWindow的使用_第2张图片

Editor窗口鼠标悬停

mouseOverWindow与fouseWindow相似,这个是鼠标悬停在哪个Window,这个静态变量就是那个窗口。

 void OnInspectorUpdate()
    {
   
        if (EditorWindow.mouseOverWindow)
 
            EditorWindow.mouseOverWindow

你可能感兴趣的:(unity,编辑器,游戏引擎)