WebGLTextureMaxSizeTool.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using UnityEditor;
  2. using UnityEngine;
  3. using System.Collections.Generic;
  4. public class WebGLTextureMaxSizeTool
  5. {
  6. private const int TargetMaxSize = 1024;
  7. [MenuItem("Tools/Force All Textures MaxSize = 1024")]
  8. public static void ForceWebGLTextureMaxSize()
  9. {
  10. string[] guids = AssetDatabase.FindAssets("t:Texture2D", new[] { "Assets" });
  11. int changedCount = 0;
  12. try
  13. {
  14. AssetDatabase.StartAssetEditing();
  15. foreach (string guid in guids)
  16. {
  17. string path = AssetDatabase.GUIDToAssetPath(guid);
  18. TextureImporter importer = AssetImporter.GetAtPath(path) as TextureImporter;
  19. if (importer == null)
  20. continue;
  21. // 跳过 Sprite Atlas(可选)
  22. //if (importer.textureType == TextureImporterType.Sprite && importer.spriteImportMode == SpriteImportMode.Multiple)
  23. //{
  24. // // 如果你不想跳过,可以删掉这段
  25. //}
  26. TextureImporterPlatformSettings webglSettings =
  27. importer.GetPlatformTextureSettings("WebGL");
  28. bool needReimport = false;
  29. if (!webglSettings.overridden)
  30. {
  31. webglSettings.overridden = true;
  32. needReimport = true;
  33. }
  34. if (webglSettings.maxTextureSize != TargetMaxSize)
  35. {
  36. webglSettings.maxTextureSize = TargetMaxSize;
  37. needReimport = true;
  38. }
  39. if (needReimport)
  40. {
  41. importer.SetPlatformTextureSettings(webglSettings);
  42. changedCount++;
  43. }
  44. }
  45. }
  46. finally
  47. {
  48. AssetDatabase.StopAssetEditing();
  49. AssetDatabase.SaveAssets();
  50. AssetDatabase.Refresh();
  51. }
  52. EditorUtility.DisplayDialog(
  53. "WebGL Texture Tool",
  54. $"处理完成\n\n修改贴图数量:{changedCount}",
  55. "OK"
  56. );
  57. Debug.Log($"[WebGLTextureMaxSizeTool] 修改贴图数量:{changedCount}");
  58. }
  59. }