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(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(); 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(); } }