EditorApplication 是编辑器下的主要程序类,为我们提供丰富的方法和事件等。
静态变量
applicationContentsPath
- 返回你当前Unity编辑器的Data文件路径。
- 如
D:/UnityVersions/2021.3.22f1c1/Editor/Data
applicationPath
- 返回你当前Unity编辑器的执行文件位置。
- 如
D:/UnityVersions/2021.3.22f1c1/Editor/Unity.exe
contextualPropertyMenu
- 每当用户在Inspector面版中右键点击组件属性时引发的回调。
- 可以借助
GenericMenu.AddItem
追加操作项。
delayCall
- 在所有Inspector面板更新之后调用一次。
- 仅执行一次。
hierarchyWindowItemOnGUI
- Hierarchy窗口中每个可见列表项的 OnGUI 事件的回调。
- 可以利用此项回调绘制独特的UI反馈对象状态或组件情况。
- 可以通过
GameObject go = (GameObject)EditorUtility.InstanceIDToObject(instanceId);
方式通过instanceId获取对应GameObject。 instanceId
可能为null,一般为场景节点。
isCompiling
- 编辑器当前是否正在编译脚本。
isPaused
- 当前是否已暂停模式。
- 可以设置是否暂停。
- 等同于主工具栏中的Pause按钮。
isPlaying
- 当前是否已播放模式。
- 可以设置是否播放。
- 等同于主工具栏中的Play按钮。
- 设置
true
需要所有脚本代码编译完成之后。
isPlayingOrWillChangePlaymode
- 当前是否是播放模式或者准备到播放模式。
isRemoteConnected
- 编辑器当前是否已连接到 Unity Remote 4 客户端应用程序。
- Unity Remote 是可下载的应用程序,旨在帮助进行 Android、iOS 和 tvOS 开发。从 Unity Editor 以播放模式运行项目时,该应用程序将与 Unity 连接。Editor 的可视输出将发送到设备的屏幕,而实时输入将发送回 Unity 中正在运行的项目。这样,您可以很好地了解您的游戏在目标设备上的真实视觉效果和处理方式,而又省去了针对每项测试进行完整构建的麻烦。
- 安卓获取:Google Play
- IOS获取:App Store
- 安卓获取2:CSDN资源
isTemporaryProject
- 项目是作为临时项目创建
- 临时项目是通过Unity.exe使用"-temporary"命令行参数创建的项目
- 位于文件系统中的临时位置(例如用户的 TEMP 或 TMPDIR 文件夹)
- 关闭临时项目时,系统将提示用户为项目选择一个永久位置。
- 可以使用
EditorApplication.SetTemporaryProjectKeepPath
关闭当前临时项目时将其重新定位到指定路径。
isUpdating
- 当前编辑器是否正在刷新中。
- 刷新包括AssetDatabase相关处理。
modifierKeysChanged
- 键盘按键发生更改时回调。
Event.current
为null,不能捕获到对应的按键值。
projectWindowItemInstanceOnGUI
- Project窗口中创建时的 OnGUI 事件的回调。
- 这里是创建时的,创建后是
projectWindowItemOnGUI
。 - 可以使用
AssetDatabase.GUIDToAssetPath(guid)
获取资源路径。
projectWindowItemOnGUI
- Project窗口中每个列表项的 OnGUI 事件的回调。
- 可以使用
AssetDatabase.GUIDToAssetPath(guid)
获取资源路径。 guid
可能为null,一般为搜索文件夹或者根文件夹。
searchChanged
- Hierarchy窗口搜索窗发生更改后回调。
timeSinceStartup
- 自编辑器启动以来经过的时间。
- 此属性不会在启动播放模式时重置。
update
- 编辑器下的update的回调。
静态函数
Beep
public static extern void Beep();
- 播放哔的声音。一般可用于发生错误,或者一些警告类,完成某些任务的声响。
- 如果主板具有蜂鸣器则会蜂鸣器响,如果没有则需要音响或者耳机连接。
DirtyHierarchyWindowSorting
public static void DirtyHierarchyWindowSorting()
- 将Hierarchy视图排序设置为“脏”的方法。
- 主要目的使层级视图重置排序。
EnterPlaymode
public static void EnterPlaymode()
- 将编辑器切换为运行模式。
- 核心就是
isPlaying = true;
ExecuteMenuItem
public static extern bool ExecuteMenuItem(string menuItemPath);
- 调用指定MenuItem配置的方法。
- 如
EditorApplication.ExecuteMenuItem("GameObject/3D Object/Cube");
会在场景里创建个Cube。
Exit
public static extern void Exit(int returnValue);
- 退出 Unity 编辑器应用程序。
- 调用此函数将立即退出,而不会要求保存更改,可能会丢失数据
- 此函数对于退出发生特定错误的命令行进程极为有用。
ExitPlaymode
public static void ExitPlaymode()
- 将编辑器切换为编辑模式。
- 核心就是
isPlaying = false;
LockReloadAssemblies
public static extern void LockReloadAssemblies();
- 锁定加载程序集。
- 防止在不方便时加载程序集。
- 例如:在拖动操作期间,需要防止程序集重新加载,以免在拖动过程中丢失状态。
- 通过
EditorApplication.UnlockReloadAssemblies
解锁状态。 - Unity 会自动阻止在鼠标按下时重新加载。
UnlockReloadAssemblies
public static extern void UnlockReloadAssemblies();
- 解锁加载程序集。
- 通过
EditorApplication.LockReloadAssemblies
锁定状态。 - 必须在
EditorApplication.LockReloadAssemblies
之后调用,以重新启用程序集的加载过程。
OpenProject
public static void OpenProject(string projectPath, params string[] args)
- 打开另一个项目。
projectPath
项目路径,args
命令参数。- 此函数不会立即退出,它将在执行函数返回后打开另一个项目。
QueuePlayerLoopUpdate
public static void QueuePlayerLoopUpdate()
- 编辑器循环更新。
- 将场景标记“脏”从而重新刷新。
- 强制重绘任何将
EditorWindow.autoRepaintOnSceneChange=true
的窗口。 - 更新任何标有
[ExecuteInEditMode]
的脚本或MonoBehaviour.runInEditMode=true
。
RepaintHierarchyWindow
public static void RepaintHierarchyWindow()
- 重绘 Hierarchy 窗口。
EditorApplication.hierarchyWindowItemOnGUI
将会重绘。
RepaintProjectWindow
public static void RepaintHierarchyWindow()
- 重绘 Project 窗口。
EditorApplication.projectWindowItemOnGUI
和EditorApplication.projectWindowItemInstanceOnGUI
将会重绘。
SetTemporaryProjectKeepPath
public static extern void SetTemporaryProjectKeepPath(string path);
- 设置 Unity 在关闭当前的临时项目时应在哪个路径存储该项目。
path
关闭当前临时项目时应将其重新定位到的路径。- 如果
EditorApplication.isTemporaryProject
不为 true,则调用此 API 会出错。
Step
public static extern void Step();
- 执行单帧步骤。
- 等同于主工具栏中的 Step 按钮。
事件
hierarchyChanged
- 当层级视图中的对象或对象组发生更改时引发的事件。
- 触发此事件的操作包括在当前层级视图中创建对象以及对其进行重命名、重定父级或销毁,以及加载、卸载、重命名或重新排序已加载的场景。请注意,系统不会为响应这些操作而立即引发该事件,而是会在下一次更新编辑器应用程序期间发送。
- 对已设置
HideFlags.HideInHierarchy
的对象执行的操作不会引发此事件,但更改Object.hideFlags
会引发此事件。
pauseStateChanged
- 每当编辑器的暂停状态发生更改时引发的事件。
EditorApplication.isPaused
,EditorApplication.isPlaying
,EditorApplication.EnterPlaymode()
,EditorApplication.ExitPlaymode()
会影响次回调。
playModeStateChanged
- 每当编辑器的播放状态发生更改时引发的事件。
EditorApplication.isPaused
,EditorApplication.isPlaying
,EditorApplication.EnterPlaymode()
,EditorApplication.ExitPlaymode()
会影响次回调。
projectChanged
- 每当项目的状态发生更改时引发的事件。
- 触发此事件的操作包括创建资源或对其进行重命名或重定父级,以及移动或重命名项目中的文件夹。
- 系统不会立即响应这些操作而引发该事件,而是会在下一次更新编辑器应用程序期间引发。
- 已设置
HideFlags.HideInHierarchy
的资源执行的操作不会引发此事件。
quitting
- 当编辑器应用程序退出时,Unity 会触发此事件。
- 如果编辑器被迫退出或发生崩溃,则不会触发此事件。
- 无法取消退出进程时会引发此事件。
wantsToQuit
- 当编辑器应用程序想要退出时,Unity 会引发此事件。
- 引发此事件时,退出过程已开始但可以取消。
- 返回true,并且退出进程将继续。 返回false,并且退出进程将取消。