PoolClearEditor.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. using UnityEditor;
  4. using WS;
  5. ///<summary>对象池定时销毁编辑器</summary>
  6. public class GamePoolTimerEditor : EditorWindow
  7. {
  8. [MenuItem("Tools/Framework/对象池定时销毁编辑")]
  9. public static void ShowVoice()
  10. {
  11. GamePoolTimerEditor window = EditorWindow.GetWindow<GamePoolTimerEditor>("对象池定时销毁编辑");
  12. window.Show();
  13. }
  14. ///<summary>所有数据</summary>
  15. private List<PoolClear> Config = new List<PoolClear>();
  16. ///<summary>路径</summary>
  17. private string path;
  18. ///<summary>滑杆</summary>
  19. private Vector2 pos;
  20. ///<summary>临时数据</summary>
  21. private PoolClear tmpdata = new PoolClear();
  22. private void OnEnable()
  23. {
  24. path = $"{Application.dataPath}/Resources/Config/Framework/PoolClear.txt";
  25. if (ConfigHelper.ConfigExists(path))
  26. {
  27. Config = ConfigHelper.FileLoadConfig<List<PoolClear>>(path);
  28. }
  29. }
  30. private void OnGUI()
  31. {
  32. EditorGUILayout.BeginHorizontal();
  33. DrawPoolClearView(tmpdata);
  34. if (GUILayout.Button("添加", GUILayout.Width(100)))
  35. {
  36. if (Config.Exists(p => p.Name == tmpdata.Name))
  37. {
  38. ShowNotification(new GUIContent($"物体:{tmpdata.Name} 已存在"), 2);
  39. }
  40. else
  41. {
  42. Config.Add(tmpdata);
  43. tmpdata = new PoolClear();
  44. }
  45. }
  46. EditorGUILayout.EndHorizontal();
  47. pos = EditorGUILayout.BeginScrollView(pos);
  48. for (int i = 0; i < Config.Count; i++)
  49. {
  50. EditorGUILayout.BeginHorizontal();
  51. DrawPoolClearView(Config[i]);
  52. if (GUILayout.Button("删除", GUILayout.Width(100)))
  53. {
  54. Config.RemoveAt(i);
  55. }
  56. EditorGUILayout.EndHorizontal();
  57. }
  58. EditorGUILayout.BeginHorizontal();
  59. GUILayout.Label("");
  60. if (GUILayout.Button("保存", GUILayout.Width(100)))
  61. {
  62. ConfigHelper.SaveConfig(Config, path);
  63. }
  64. EditorGUILayout.EndHorizontal();
  65. EditorGUILayout.EndScrollView();
  66. }
  67. ///<summary>绘制PoolClear</summary>
  68. private void DrawPoolClearView(PoolClear data)
  69. {
  70. GUILayout.Label("物体名称:", GUILayout.Width(60));
  71. data.Name = EditorGUILayout.TextField(data.Name);
  72. GUILayout.Label("持续保存数量:", GUILayout.Width(80));
  73. data.CullSave = EditorGUILayout.IntField(data.CullSave);
  74. GUILayout.Label("清理间隔时间:", GUILayout.Width(80));
  75. data.CullTime = EditorGUILayout.IntField(data.CullTime);
  76. GUILayout.Label("每次清理数量:", GUILayout.Width(80));
  77. data.CullNextCount = EditorGUILayout.IntField(data.CullNextCount);
  78. }
  79. }