using UnityEditor; using UnityEngine; public enum size:int { three = 256, four = 512, free = 1024, six = 2048, kaishi = 4096, } public class ScanAndConvertTextures : EditorWindow { size size = size.free; int sum; [MenuItem("工具/UI转换工具")] private static void ShowWindow() { GetWindow(typeof(ScanAndConvertTextures)); } private void OnGUI() { GUILayout.Label("将图片批量转换的工具,自动将02_UI下的png和jpg格式的图片转换为Sprite,并且分辨率改为1024", EditorStyles.boldLabel); GUILayout.FlexibleSpace(); size = (size)EditorGUILayout.EnumPopup(size); if (GUILayout.Button("开始转换")) { ConvertTextures(); } } private void ConvertTextures() { sum = (int)size; string folderPath = "Assets/02_UI"; // 修改为你想要扫描的文件夹路径 string[] files = AssetDatabase.FindAssets("t:Texture2D", new[] { folderPath }); foreach (var file in files) { string path = AssetDatabase.GUIDToAssetPath(file); TextureImporter importer = AssetImporter.GetAtPath(path) as TextureImporter; if (importer != null && (System.IO.Path.GetExtension(path) == ".png" || System.IO.Path.GetExtension(path) == ".jpg")) { if (importer.textureType != TextureImporterType.Sprite) { importer.textureType = TextureImporterType.Sprite; importer.spriteImportMode = SpriteImportMode.Single; TextureImporterSettings textureSettings = new TextureImporterSettings(); importer.ReadTextureSettings(textureSettings); textureSettings.maxTextureSize = 2048; textureSettings.compressionQuality = (int)TextureCompressionQuality.Normal; importer.crunchedCompression = true; importer.SetTextureSettings(textureSettings); importer.SaveAndReimport(); CrunchTexture(path); } } } Debug.Log("转换成功"); } private void CrunchTexture(string path) { var texture = AssetDatabase.LoadAssetAtPath(path); if (texture != null) { EditorUtility.CompressTexture(texture, TextureFormat.RGBA32, TextureCompressionQuality.Normal); } } }