Unity 框架

PreferenceExecutor.cs 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /****************************************************
  2. 文件:PreferenceExecutor.cs
  3. 作者:陶长春
  4. 邮箱:376248129@qq.com
  5. 日期:2025年2月11日 6:57:08
  6. UnityVersion: 2021.3.13f1
  7. 功能:偏好设置执行器
  8. *****************************************************/
  9. using System.Collections;
  10. using UnityEngine;
  11. using System.Collections.Generic;
  12. using UnityEditor;
  13. using System;
  14. using UnityEngine.SceneManagement;
  15. namespace TFramework
  16. {
  17. [InitializeOnLoad]
  18. public class PreferenceExecutor
  19. {
  20. const string DATAPATH = "Assets/TFramework/Editor/Data/PreferenceData.asset";
  21. static PreferenceData preferenceData;
  22. static double _lastTime;
  23. static PreferenceExecutor()
  24. {
  25. preferenceData = AssetDatabase.LoadAssetAtPath<PreferenceData>(DATAPATH);
  26. EditorApplication.update += Update;
  27. _lastTime = EditorApplication.timeSinceStartup;
  28. }
  29. private static void Update()
  30. {
  31. if(preferenceData&&preferenceData.m_isAutoSave && !EditorApplication.isPlaying)
  32. {
  33. if(EditorApplication.timeSinceStartup-_lastTime>=preferenceData.m_autoSaveTime)
  34. {
  35. EditorApplication.ExecuteMenuItem("File/Save");
  36. _lastTime = EditorApplication.timeSinceStartup;
  37. }
  38. }
  39. }
  40. [RuntimeInitializeOnLoadMethod]
  41. private static void OnEditorRunTime()
  42. {
  43. if (preferenceData.m_isAlwaysFormAssignScene)
  44. if (!string.IsNullOrEmpty(preferenceData.m_assignScene) && SceneManager.GetActiveScene().path != preferenceData.m_assignScene)
  45. {
  46. SceneManager.LoadScene(preferenceData.m_assignScene);
  47. }
  48. }
  49. }
  50. }