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.assetBundleName = StringUtility.Contact("ui/sprite/", setting.folderName.ToLower());  
 | 
                        textureImporter.mipmapEnabled = false;  
 | 
                        textureImporter.alphaSource = setting.alphaSource;  
 | 
                        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)  
 | 
                {  
 | 
                    DesignDebug.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();  
 | 
  
 | 
    }  
 | 
  
 | 
}  
 |