| using System.Collections; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
| using UnityEditor; | 
| using System.IO; | 
| using System; | 
|   | 
| public class UpdateSpritePackingSetting  | 
| { | 
|     static string rootPath = Application.dataPath + "/ResourcesOut/UI/Sprite"; | 
|     static string spriteRelativePath = "Assets/ResourcesOut/UI/Sprite";  | 
|   | 
|     [MenuItem("程序/Sprite/标准化Sprite设置")] | 
|     public static void UpdateAllSpritePackingSetting()  | 
|     {  | 
|         var path = "Assets/Editor/SpritePacking/SpriteSettings.asset";  | 
|         var so = AssetDatabase.LoadAssetAtPath<SpriteSettingConfig>(path);  | 
|   | 
|         if (so == null)  | 
|         {  | 
|             return;  | 
|         }  | 
|   | 
|         foreach (var setting in so.spriteSettings)  | 
|         {  | 
|             var directoryPath = StringUtility.Contact(rootPath, Path.DirectorySeparatorChar, setting.folderName);  | 
|   | 
|             if (!Directory.Exists(directoryPath))  | 
|             {  | 
|                 return;  | 
|             }  | 
|   | 
|             var files = new DirectoryInfo(directoryPath).GetFiles("*.png", SearchOption.TopDirectoryOnly);  | 
|   | 
|             var total = files.Length;  | 
|             var count = 0;  | 
|   | 
|             var textureImporterPlatformSettings = new TextureImporterPlatformSettings[3];  | 
|             var index = 0;  | 
|             foreach (var platform in setting.platformSettings)  | 
|             {  | 
|                 var platformSetting = textureImporterPlatformSettings[index] = new TextureImporterPlatformSettings();  | 
|                 platformSetting.allowsAlphaSplitting = false;  | 
|                 platformSetting.name = platform.name;  | 
|                 platformSetting.allowsAlphaSplitting = false;  | 
|                 platformSetting.overridden = true;  | 
|                 platformSetting.maxTextureSize = platform.maxTextureSize;  | 
|                 platformSetting.format = platform.textureFormat;  | 
|                 platformSetting.compressionQuality = platform.compressionQuality;  | 
|   | 
|                 index++;  | 
|             }  | 
|   | 
|             foreach (var file in files)  | 
|             {  | 
|                 try  | 
|                 {  | 
|                     var folderName = setting.folderName;  | 
|                     var importerPath = spriteRelativePath + "/" + folderName + "/" + file.Name;  | 
|                     var importer = AssetImporter.GetAtPath(importerPath);  | 
|   | 
|                     if (importer == null)  | 
|                     {  | 
|                         continue;  | 
|                     }  | 
|   | 
|                     var textureImporter = importer as TextureImporter;  | 
|                     if (textureImporter == null)  | 
|                     {  | 
|                         continue;  | 
|                     }  | 
|   | 
|                     if (!setting.Equal(textureImporter)  | 
|                         || textureImporter.textureType != TextureImporterType.Sprite  | 
|                         || textureImporter.spriteImportMode != SpriteImportMode.Single  | 
|                         || textureImporter.mipmapEnabled != false  | 
|                         || textureImporter.alphaIsTransparency != true  | 
|                         || textureImporter.spritePackingTag != folderName  | 
|                         || textureImporter.wrapMode != TextureWrapMode.Clamp  | 
|                         || textureImporter.filterMode != FilterMode.Bilinear)  | 
|                     {  | 
|                         textureImporter.alphaSource = setting.alphaSource;  | 
|                         textureImporter.textureType = TextureImporterType.Sprite;  | 
|                         textureImporter.spriteImportMode = SpriteImportMode.Single;  | 
|                         textureImporter.assetBundleName = StringUtility.Contact("ui/sprite/", setting.folderName.ToLower());  | 
|                         textureImporter.mipmapEnabled = false;  | 
|                         textureImporter.alphaIsTransparency = true;  | 
|                         textureImporter.spritePackingTag = folderName;  | 
|                         textureImporter.wrapMode = TextureWrapMode.Clamp;  | 
|                         textureImporter.filterMode = FilterMode.Bilinear;  | 
|   | 
|                         foreach (var platformSetting in textureImporterPlatformSettings)  | 
|                         {  | 
|                             textureImporter.SetPlatformTextureSettings(platformSetting);  | 
|                         }  | 
|   | 
|                         AssetDatabase.ImportAsset(importerPath);  | 
|                         EditorUtility.SetDirty(textureImporter);  | 
|                     }  | 
|   | 
|                     count++;  | 
|   | 
|                     EditorUtility.DisplayProgressBar(StringUtility.Contact("设置图集标签:", setting.folderName), file.Name, count / (float)total);  | 
|                 }  | 
|                 catch (Exception ex)  | 
|                 {  | 
|                     DebugEx.Log(ex);  | 
|                     EditorUtility.ClearProgressBar();  | 
|                 }  | 
|             }  | 
|   | 
|         }  | 
|   | 
|         AssetDatabase.SaveAssets();  | 
|         AssetDatabase.Refresh();  | 
|   | 
|         EditorUtility.ClearProgressBar();  | 
|     }  | 
|   | 
|     [MenuItem("程序/Sprite/初始化Sprite设置")]  | 
|     public static void Init()  | 
|     {  | 
|         var path = "Assets/Editor/SpritePacking/SpriteSettings.asset";  | 
|         var so = ScriptableObject.CreateInstance<SpriteSettingConfig>();  | 
|   | 
|         var directorys = Directory.GetDirectories(rootPath);  | 
|         so.spriteSettings = new SpriteSettingConfig.SpriteSetting[directorys.Length];  | 
|   | 
|         var index = 0;  | 
|         foreach (var directory in directorys)  | 
|         {  | 
|             var spriteSetting = so.spriteSettings[index] = new SpriteSettingConfig.SpriteSetting();  | 
|   | 
|             spriteSetting.alphaSource = TextureImporterAlphaSource.FromInput;  | 
|             spriteSetting.folderName = Path.GetFileName(directory);  | 
|             spriteSetting.meshType = SpriteMeshType.Tight;  | 
|   | 
|             spriteSetting.platformSettings = new SpriteSettingConfig.PlatformSetting[3];  | 
|   | 
|             spriteSetting.platformSettings[0] = new SpriteSettingConfig.PlatformSetting();  | 
|             spriteSetting.platformSettings[1] = new SpriteSettingConfig.PlatformSetting();  | 
|             spriteSetting.platformSettings[2] = new SpriteSettingConfig.PlatformSetting();  | 
|   | 
|             spriteSetting.platformSettings[0].name = "Standalone";  | 
|             spriteSetting.platformSettings[1].name = "Android";  | 
|             spriteSetting.platformSettings[2].name = "iPhone";  | 
|   | 
|             spriteSetting.platformSettings[0].textureFormat = TextureImporterFormat.RGBA32;  | 
|             spriteSetting.platformSettings[1].textureFormat = TextureImporterFormat.ETC2_RGBA8;  | 
|             spriteSetting.platformSettings[2].textureFormat = TextureImporterFormat.PVRTC_RGBA4;  | 
|   | 
|             index++;  | 
|         }  | 
|   | 
|         AssetDatabase.DeleteAsset(path);  | 
|         AssetDatabase.CreateAsset(so, path);  | 
|         AssetDatabase.SaveAssets();  | 
|         AssetDatabase.Refresh();  | 
|   | 
|     }  | 
|   | 
| }  |