ShaderVariantCollectorWindow.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using UnityEngine;
  2. using UnityEditor;
  3. namespace YooAsset.Editor
  4. {
  5. public class ShaderVariantCollectionWindow : EditorWindow
  6. {
  7. static ShaderVariantCollectionWindow _thisInstance;
  8. [MenuItem("YooAsset/ShaderVariant Collector", false, 201)]
  9. static void ShowWindow()
  10. {
  11. if (_thisInstance == null)
  12. {
  13. _thisInstance = GetWindow<ShaderVariantCollectionWindow>("着色器变种收集工具");
  14. _thisInstance.minSize = new Vector2(800, 600);
  15. }
  16. _thisInstance.Show();
  17. }
  18. private ShaderVariantCollection _selectSVC;
  19. private void OnGUI()
  20. {
  21. EditorGUILayout.Space();
  22. ShaderVariantCollectorSettingData.Setting.SavePath = EditorGUILayout.TextField("收集文件保存路径", ShaderVariantCollectorSettingData.Setting.SavePath);
  23. int currentShaderCount = ShaderVariantCollectionHelper.GetCurrentShaderVariantCollectionShaderCount();
  24. int currentVariantCount = ShaderVariantCollectionHelper.GetCurrentShaderVariantCollectionVariantCount();
  25. EditorGUILayout.LabelField($"CurrentShaderCount : {currentShaderCount}");
  26. EditorGUILayout.LabelField($"CurrentVariantCount : {currentVariantCount}");
  27. // 搜集变种
  28. EditorGUILayout.Space();
  29. if (GUILayout.Button("搜集变种", GUILayout.MaxWidth(80)))
  30. {
  31. ShaderVariantCollector.Run(ShaderVariantCollectorSettingData.Setting.SavePath, null);
  32. }
  33. // 查询
  34. EditorGUILayout.Space();
  35. if (GUILayout.Button("查询", GUILayout.MaxWidth(80)))
  36. {
  37. string resultPath = EditorTools.OpenFilePath("Select File", "Assets/", "shadervariants");
  38. if (string.IsNullOrEmpty(resultPath))
  39. return;
  40. string assetPath = EditorTools.AbsolutePathToAssetPath(resultPath);
  41. _selectSVC = AssetDatabase.LoadAssetAtPath<ShaderVariantCollection>(assetPath);
  42. }
  43. if (_selectSVC != null)
  44. {
  45. EditorGUILayout.LabelField($"ShaderCount : {_selectSVC.shaderCount}");
  46. EditorGUILayout.LabelField($"VariantCount : {_selectSVC.variantCount}");
  47. }
  48. }
  49. private void OnDestroy()
  50. {
  51. ShaderVariantCollectorSettingData.SaveFile();
  52. }
  53. }
  54. }