我们在Unity中安装的一些插件、工具,会在工程打开时弹出一个相关介绍的窗口,实现这样的功能需要用到InitializeOnLoadMethod这个特性,下面是官方文档中关于该特性的介绍:
使用了该特性的静态函数会在Unity工程加载时,不需要用户做任何操作,函数将会自动执行,下面是使用该特性实现的一个简单的用于测试的窗口:
测试代码如下:
代码语言:javascript复制using UnityEngine;
using UnityEditor;
//首先要继承EditorWindow窗口类
public class Example : EditorWindow
{
[InitializeOnLoadMethod]
private static void OnEditorLaunch()
{
//代码重新编译时该方法也会重新执行
//使用时间判断避免重复执行
if (EditorApplication.timeSinceStartup < 30)
{
//向此委托添加函数,以便将其执行延迟到检视面板更新完成之后
//每个函数在添加后仅执行一次
EditorApplication.delayCall = () =>
{
//获取窗口
var window = GetWindow<Example>(true, "About", true);
//设置窗口位置及大小
window.position = new Rect(200, 200, 600, 300);
//限制最小尺寸
window.minSize = new Vector2(600, 300);
//限制最大尺寸
window.maxSize = new Vector2(600, 300);
//打开窗口
window.Show();
};
}
}
private void OnGUI()
{
//在窗口中绘制具体内容
GUILayout.Label("SKFramework", new GUIStyle(GUI.skin.label) { fontSize = 50, fontStyle = FontStyle.Bold });
GUILayout.Label("//TODO");
}
}