WebGLTextureMaxSizeTool.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. importer.SaveAndReimport();
  43. changedCount++;
  44. }
  45. }
  46. }
  47. finally
  48. {
  49. AssetDatabase.StopAssetEditing();
  50. AssetDatabase.SaveAssets();
  51. AssetDatabase.Refresh();
  52. }
  53. EditorUtility.DisplayDialog(
  54. "WebGL Texture Tool",
  55. $"处理完成\n\n修改贴图数量:{changedCount}",
  56. "OK"
  57. );
  58. Debug.Log($"[WebGLTextureMaxSizeTool] 修改贴图数量:{changedCount}");
  59. }
  60. }