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