EditorStatusWatcher.cs 825 B

123456789101112131415161718192021222324252627
  1. using HybridCLR.Editor;
  2. using System;
  3. using UnityEditor;
  4. using UnityEditorInternal;
  5. /// <summary>
  6. /// 监听编辑器状态,当编辑器重新 focus 时,重新加载实例,避免某些情景下 svn 、git 等外部修改了数据却无法同步的异常。
  7. /// </summary>
  8. [InitializeOnLoad]
  9. public static class EditorStatusWatcher
  10. {
  11. public static Action OnEditorFocused;
  12. static bool isFocused;
  13. static EditorStatusWatcher() => EditorApplication.update += Update;
  14. static void Update()
  15. {
  16. if (isFocused != InternalEditorUtility.isApplicationActive)
  17. {
  18. isFocused = InternalEditorUtility.isApplicationActive;
  19. if (isFocused)
  20. {
  21. HybridCLRSettings.LoadOrCreate();
  22. OnEditorFocused?.Invoke();
  23. }
  24. }
  25. }
  26. }