如何解决Unity自定义编辑器退出Unity时保存数据
我创建了一个简单的自定义编辑器,显示了我在Unity上花费了多少时间。按下按钮时,它将开始时间记录在一个可编写脚本的对象中(该对象很脏)。再次按下该按钮时,它将记录结束时间。如果在按下按钮之前关闭了窗口,则使用OnDestroy()方法完成录制。它有效(我也使用“ ExecuteInEditMode”)。 这是问题所在:如果我不按下按钮就关闭Unity,则OnDestroy()方法这次不起作用。有什么办法可以解决这个问题?
解决方法
您可以向EditorApplication.quitting
当编辑器应用程序退出时,Unity引发此事件。
向该事件添加事件处理程序,以接收有关应用程序退出的通知。
请注意,如果强制退出编辑器或发生崩溃,则不会触发。无法退出流程时引发此事件。
请注意,您可以完全自动化地完成操作,而无需按钮或ScriptableObject:
using UnityEngine;
using UnityEditor;
using System.Diagnostics;
public static class LogEditorTime
{
private static bool isLogging;
private static readonly StopWatch sw = new StopWatch ();
static void OnQuit()
{
sw.Stop();
var elapsedTime = sw.Elapsed;
Debug.Log($"Quitting the Editor after {elapsedTime.Hours}h {elapsedTime.Minutes}m {elapsedTime.Seconds}.{elapsedTime.Milliseconds / 10}s");
}
[InitializeOnLoadMethod]
static void OnLoad()
{
if(isLogging) return;
sw.Restart();
EditorApplication.quitting -= OnQuit;
EditorApplication.quitting += OnQuit;
isLogging = true;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。