Unity 框架

EditorWindowTool.cs 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using UnityEditor;
  6. using UnityEngine;
  7. using Object = UnityEngine.Object;
  8. namespace TFramework
  9. {
  10. /// <summary>
  11. /// 编辑器启动
  12. /// </summary>
  13. [InitializeOnLoad]
  14. public class EditorWindowTool
  15. {
  16. static EditorWindowTool()
  17. {
  18. EditorApplication.hierarchyWindowItemOnGUI += HierarchyItemChanged;
  19. if (EditorApplication.timeSinceStartup<30)
  20. {
  21. OnStart();
  22. }
  23. ImprotPackageManager.CheckImportPackage(()=> {
  24. EditorGlobalTool.AddDefineSymbols("INITFRAME");
  25. });
  26. OnAssetsEvent.CreateAssetEvent -= OnCreateScript;
  27. OnAssetsEvent.CreateAssetEvent += OnCreateScript;
  28. }
  29. private static void OnStart()
  30. {
  31. EditorGlobalTool.RemoveDefineSymbols("INITFRAME");
  32. }
  33. private static void HierarchyItemChanged(int instanceID, Rect selectionRect)
  34. {
  35. Object obj = EditorUtility.InstanceIDToObject(instanceID);
  36. if((obj as GameObject)?.GetComponent<Canvas>())
  37. {
  38. if((obj as GameObject).GetComponent<UIDomain>()==null && (obj as GameObject).name=="Canvas")
  39. {
  40. (obj as GameObject).AddComponent<UIDomain>().m_domainName = UIManager.DEFAULTDOMAIN;
  41. }
  42. }
  43. }
  44. /// <summary>
  45. /// C#脚本被创建时事件
  46. /// </summary>
  47. /// <param name="path">文件路径</param>
  48. public static void OnCreateScript(string path)
  49. {
  50. path = path.Replace(".meta", "");
  51. if (path.EndsWith(".cs"))
  52. {
  53. string codes = File.ReadAllText(path);
  54. if (codes.Contains("TFramework")) return;
  55. int pos = codes.IndexOf("using");
  56. if (pos == -1)
  57. pos = codes.IndexOf("namespace");
  58. if (pos == -1)
  59. pos = codes.IndexOf("public");
  60. codes = codes.Insert(pos, "using TFramework;\n");
  61. File.WriteAllText(path, codes);
  62. AssetDatabase.Refresh();
  63. }
  64. }
  65. }
  66. }