UEDL14——EditorApplication公共类
UEDL14——EditorApplication公共类
本章代码关键字
1 | //监听编辑器事件 |
EditorApplication公共类
它是 Unity 编辑器中的一个公共类,它主要提供了一些和编辑器本身相关的一些功能
比如 编辑器事件监听(播放、暂停等)、生命周期判断(是否运行中、暂停中、编译中)、编辑器进入播放模式、退出播放模式 等等功能
EditorApplication
相关具体内容:
- EditorApplication - Unity 脚本 API(中文文档,部分翻译缺失)
- Unity - Scripting API: EditorApplication (unity3d.com)(英文文档)
EditorSceneManager
相关具体内容(它提供了一些保存场景等方法):
- SceneManagement.EditorSceneManager - Unity 脚本 API(中文文档,部分翻译缺失)
- Unity - Scripting API: EditorSceneManager (unity3d.com)(英文文档)
常用API
-
监听编辑器事件
-
EditorApplication.update
:每帧更新事件,可以用于在编辑器中执行一些逻辑1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17private void OnEnable()
{
EditorApplication.update += MyUpdate;
}
private void OnDestroy()
{
EditorApplication.update -= MyUpdate;
}
private void MyUpdate()
{
if (EditorApplication.isPlaying)
{
Debug.Log("编辑器窗口的帧更新");
}
} -
EditorApplication.hierarchyChanged
:层级视图变化事件,当场景中的对象发生变化时触发 -
EditorApplication.projectChanged
:项目变化事件,当项目中的资源发生变化时触发 -
EditorApplication.playModeStateChanged
:编辑器播放状态变化时触发(已过时,可用pauseStateChanged
) -
EditorApplication.pauseStateChanged
:编辑器暂停状态变化时触发
-
-
管理编辑器生命周期相关
-
EditorApplication.isPlaying
:判断当前是否处于游戏运行状态。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17private void OnEnable()
{
EditorApplication.update += MyUpdate;
}
private void OnDestroy()
{
EditorApplication.update -= MyUpdate;
}
private void MyUpdate()
{
if (EditorApplication.isPlaying)
{
Debug.Log("处于运行播放状态");
}
} -
EditorApplication.isPaused
:判断当前游戏是否处于暂停状态。 -
EditorApplication.isCompiling
:判断Unity编辑器是否正在编译代码 -
EditorApplication.isUpdating
:判断Unity编辑器是否正在刷新AssetDatabase
-
-
获取Unity应用程序路径相关
-
EditorApplication.applicationContentsPath
:Unity安装目录Data路径 -
EditorApplication.applicationPath
:Unity安装目录可执行程序路径
1
2
3
4
5private void OnGUI()
{
EditorGUILayout.LabelField("Unity安装目录data路径", EditorApplication.applicationContentsPath);
EditorGUILayout.LabelField("Unity安装目录.exe路径", EditorApplication.applicationPath);
}效果如下:
-
-
常用方法
-
EditorApplication.Exit(0)
:退出Unity编辑器1
2
3
4
5
6
7private void OnGUI()
{
if (GUILayout.Button("进入播放模式"))
{
EditorApplication.EnterPlaymode();
}
} -
EditorApplication.ExitPlaymode()
:退出播放模式,切换到编辑模式1
2
3
4
5
6
7private void OnGUI()
{
if (GUILayout.Button("退出播放模式"))
{
EditorApplication.ExitPlaymode();
}
} -
EditorApplication.EnterPlaymode()
:进入播放模式1
2
3
4
5
6
7private void OnGUI()
{
if (GUILayout.Button("关闭编辑器"))
{
EditorApplication.Exit(0);
}
}
-