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