【图片压缩工具】

dev_chengFeng
gaoxin 2021-09-28 19:44:39 +08:00
parent 37381da67e
commit eb452a1c69
1 changed files with 245 additions and 0 deletions

View File

@ -343,6 +343,251 @@ namespace LJ_OptTools
GameEditor.CustomImportSettings.enabled = false;
EditorUtility.ClearProgressBar();
}
#region 图片压缩
[MenuItem("Assets/图片压缩/UITextue")]
public static void UITexture()
{
DoCompress(0);
}
[MenuItem("Assets/图片压缩/BGSingle")]
public static void BGSingle()
{
DoCompress(1);
}
[MenuItem("Assets/图片压缩/BGMultiple")]
public static void BGMultiple()
{
DoCompress(2);
}
[MenuItem("Assets/图片压缩/SpineTexture")]
public static void SpineTexture()
{
DoCompress(3);
}
public static void DoCompress(int cType)
{
var guids = Selection.assetGUIDs;
var filePaths = new List<string>();
foreach (var id in guids)
{
var path = AssetDatabase.GUIDToAssetPath(id);
if (File.Exists(path))
{
if (!filePaths.Contains(path))
filePaths.Add(path);
}
else if (Directory.Exists(path))
{
var subFileGuids = AssetDatabase.FindAssets("t:Texture", new string[] { path });
if (subFileGuids != null && subFileGuids.Length > 0)
{
foreach (var subId in subFileGuids)
{
var subPath = AssetDatabase.GUIDToAssetPath(subId);
if (!filePaths.Contains(subPath))
filePaths.Add(subPath);
}
}
}
}
if (filePaths.Count < 1) return;
for (int i = 0; i < filePaths.Count; i++)
{
string path = filePaths[i];
EditorUtility.DisplayProgressBar(string.Format("Opt UI Texture({0}/{1})", i, filePaths.Count), path, i * 1f / filePaths.Count);
TextureImporter ti = (TextureImporter)TextureImporter.GetAtPath(path);
switch (cType)
{
case 0:
SetUITexture(ti);
break;
case 1:
SetBGSingle(ti);
break;
case 2:
SetBGMultiple(ti);
break;
case 3:
SetSpineTexture(ti);
break;
}
AssetDatabase.ImportAsset(path);
}
EditorUtility.ClearProgressBar();
}
/// <summary>
/// 设置UI图片自动图集名称,与图片格式
/// </summary>
///
public static string GetAtlasName(string assetPath)
{
int index = assetPath.IndexOf("/Atlas/");
string atlasName = assetPath.Substring(index + 7);
index = atlasName.IndexOf("/");
if (index != -1)
{
atlasName = atlasName.Substring(0, index);
}
return atlasName;
}
static void SetUITexture(TextureImporter importer)
{
importer.spritePackingTag = GetAtlasName(importer.assetPath);
TextureImporterSettings importerSettings = new TextureImporterSettings();
importer.ReadTextureSettings(importerSettings);
importerSettings.npotScale = TextureImporterNPOTScale.None;
importerSettings.spriteMode = 1;//Single
importerSettings.spritePixelsPerUnit = GameLogic.AppConst.PIXELTOWORLD;
importerSettings.mipmapEnabled = false;
importerSettings.wrapMode = TextureWrapMode.Clamp;
importerSettings.filterMode = FilterMode.Trilinear;
importerSettings.alphaIsTransparency = true;
importer.SetTextureSettings(importerSettings);
//Android
TextureImporterPlatformSettings s_Android = new TextureImporterPlatformSettings();
s_Android.name = "Android";
s_Android.maxTextureSize = 2048;
s_Android.format = TextureImporterFormat.ETC2_RGBA8Crunched;
s_Android.compressionQuality = 50;
s_Android.allowsAlphaSplitting = false;
s_Android.overridden = true;
importer.SetPlatformTextureSettings(s_Android);
//IOS
TextureImporterPlatformSettings s_IOS = new TextureImporterPlatformSettings();
s_IOS.name = "iPhone";
s_IOS.maxTextureSize = 2048;
s_IOS.format = TextureImporterFormat.PVRTC_RGBA4;
s_IOS.compressionQuality = 50;
s_IOS.allowsAlphaSplitting = false;
s_IOS.overridden = true;
importer.SetPlatformTextureSettings(s_IOS);
}
static void SetBGSingle(TextureImporter importer)
{
importer.spritePackingTag = string.Empty;
TextureImporterSettings importerSettings = new TextureImporterSettings();
importer.ReadTextureSettings(importerSettings);
importerSettings.npotScale = TextureImporterNPOTScale.None;
importerSettings.spriteMode = 1;//Single
importerSettings.spritePixelsPerUnit = GameLogic.AppConst.PIXELTOWORLD;
importerSettings.mipmapEnabled = false;
importerSettings.wrapMode = TextureWrapMode.Clamp;
importerSettings.filterMode = FilterMode.Trilinear;
importerSettings.alphaIsTransparency = true;
importer.SetTextureSettings(importerSettings);
//Android
TextureImporterPlatformSettings s_Android = new TextureImporterPlatformSettings();
s_Android.name = "Android";
s_Android.maxTextureSize = 2048;
s_Android.format = TextureImporterFormat.ETC2_RGBA8Crunched;
s_Android.compressionQuality = 50;
s_Android.allowsAlphaSplitting = false;
s_Android.overridden = true;
importer.SetPlatformTextureSettings(s_Android);
//IOS
TextureImporterPlatformSettings s_IOS = new TextureImporterPlatformSettings();
s_IOS.name = "iPhone";
s_IOS.maxTextureSize = 2048;
s_IOS.format = TextureImporterFormat.ASTC_RGBA_8x8;
s_IOS.compressionQuality = 50;
s_IOS.allowsAlphaSplitting = false;
s_IOS.overridden = true;
importer.SetPlatformTextureSettings(s_IOS);
}
static void SetBGMultiple(TextureImporter importer)
{
importer.spritePackingTag = string.Empty;
TextureImporterSettings importerSettings = new TextureImporterSettings();
importer.ReadTextureSettings(importerSettings);
importerSettings.npotScale = TextureImporterNPOTScale.None;
importerSettings.spriteMode = 2;//Multiple
importerSettings.spritePixelsPerUnit = GameLogic.AppConst.PIXELTOWORLD;
importerSettings.mipmapEnabled = false;
importerSettings.wrapMode = TextureWrapMode.Clamp;
importerSettings.filterMode = FilterMode.Trilinear;
importerSettings.alphaIsTransparency = true;
importer.SetTextureSettings(importerSettings);
//Android
TextureImporterPlatformSettings s_Android = new TextureImporterPlatformSettings();
s_Android.name = "Android";
s_Android.maxTextureSize = 2048;
s_Android.format = TextureImporterFormat.ETC2_RGBA8Crunched;
s_Android.compressionQuality = 50;
s_Android.allowsAlphaSplitting = false;
s_Android.overridden = true;
importer.SetPlatformTextureSettings(s_Android);
//IOS
TextureImporterPlatformSettings s_IOS = new TextureImporterPlatformSettings();
s_IOS.name = "iPhone";
s_IOS.maxTextureSize = 2048;
s_IOS.format = TextureImporterFormat.ASTC_RGBA_8x8;
s_IOS.compressionQuality = 50;
s_IOS.allowsAlphaSplitting = false;
s_IOS.overridden = true;
importer.SetPlatformTextureSettings(s_IOS);
}
static void SetSpineTexture(TextureImporter importer)
{
importer.spritePackingTag = string.Empty;
TextureImporterSettings importerSettings = new TextureImporterSettings();
importer.ReadTextureSettings(importerSettings);
importerSettings.npotScale = TextureImporterNPOTScale.None;
importerSettings.spriteMode = 1;//Single
importerSettings.spritePixelsPerUnit = GameLogic.AppConst.PIXELTOWORLD;
importerSettings.mipmapEnabled = false;
importerSettings.wrapMode = TextureWrapMode.Clamp;
importerSettings.filterMode = FilterMode.Trilinear;
importerSettings.alphaIsTransparency = true;
importer.SetTextureSettings(importerSettings);
//Android
TextureImporterPlatformSettings s_Android = new TextureImporterPlatformSettings();
s_Android.name = "Android";
s_Android.maxTextureSize = 2048;
s_Android.format = TextureImporterFormat.ASTC_RGBA_5x5;
s_Android.compressionQuality = 50;
s_Android.allowsAlphaSplitting = false;
s_Android.overridden = true;
importer.SetPlatformTextureSettings(s_Android);
//IOS
TextureImporterPlatformSettings s_IOS = new TextureImporterPlatformSettings();
s_IOS.name = "iPhone";
s_IOS.maxTextureSize = 2048;
s_IOS.format = TextureImporterFormat.ASTC_RGBA_5x5;
s_IOS.compressionQuality = 50;
s_IOS.allowsAlphaSplitting = false;
s_IOS.overridden = true;
importer.SetPlatformTextureSettings(s_IOS);
}
#endregion
}
}