ShaderVariantCollectionHelper.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Diagnostics;
  5. using UnityEngine;
  6. using UnityEngine.Rendering;
  7. using UnityEditor;
  8. namespace YooAsset.Editor
  9. {
  10. public static class ShaderVariantCollectionHelper
  11. {
  12. public static void ClearCurrentShaderVariantCollection()
  13. {
  14. EditorTools.InvokeNonPublicStaticMethod(typeof(ShaderUtil), "ClearCurrentShaderVariantCollection");
  15. }
  16. public static void SaveCurrentShaderVariantCollection(string savePath)
  17. {
  18. EditorTools.InvokeNonPublicStaticMethod(typeof(ShaderUtil), "SaveCurrentShaderVariantCollection", savePath);
  19. }
  20. public static int GetCurrentShaderVariantCollectionShaderCount()
  21. {
  22. return (int)EditorTools.InvokeNonPublicStaticMethod(typeof(ShaderUtil), "GetCurrentShaderVariantCollectionShaderCount");
  23. }
  24. public static int GetCurrentShaderVariantCollectionVariantCount()
  25. {
  26. return (int)EditorTools.InvokeNonPublicStaticMethod(typeof(ShaderUtil), "GetCurrentShaderVariantCollectionVariantCount");
  27. }
  28. /// <summary>
  29. /// 获取着色器的变种总数量
  30. /// </summary>
  31. public static string GetShaderVariantCount(string assetPath)
  32. {
  33. Shader shader = AssetDatabase.LoadAssetAtPath<Shader>(assetPath);
  34. var variantCount = EditorTools.InvokeNonPublicStaticMethod(typeof(ShaderUtil), "GetVariantCount", shader, true);
  35. return variantCount.ToString();
  36. }
  37. }
  38. }