少年修仙传客户端基础资源
lwb
2020-11-20 523a8c5b8de799aeaeaa7287f0b4f9e2edf339ee
Assets/Editor/Tool/UpdateSpritePackingSetting.cs
@@ -5,151 +5,158 @@
using System.IO;
using System;
public class UpdateSpritePackingSetting
public class UpdateSpritePackingSetting
{
    static string rootPath = Application.dataPath + "/ResourcesOut/UI/Sprite";
    static string spriteRelativePath = "Assets/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();
    }
}
    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();
    }
}