miduo_client/Assets/Scripts/Editor/OptTools/TextureSetting.cs

106 lines
3.1 KiB
C#

using System.IO;
using UnityEditor;
using UnityEngine;
namespace LJ_OptTools
{
public class TextureSetting
{
static void SettingTex( string texPath )
{
if (string.IsNullOrEmpty(texPath)) return;
var ti = AssetImporter.GetAtPath(texPath) as TextureImporter;
if (ti == null)
{
Debug.LogWarning("Can load TextureImporter:" + texPath);
return;
}
if (ti.textureShape != TextureImporterShape.Texture2D)
{
return;
}
var pAndSetting = ti.GetPlatformTextureSettings("Android");
var piPSetting = ti.GetPlatformTextureSettings("iPhone");
bool needReimport = false;
if (SettingPlantformTex(ti, pAndSetting))
{
ti.SetPlatformTextureSettings(pAndSetting);
needReimport = true;
}
if (SettingPlantformTex(ti, piPSetting))
{
ti.SetPlatformTextureSettings(piPSetting);
needReimport = true;
}
if (needReimport)
{
ti.SaveAndReimport();
}
}
static bool SettingPlantformTex( TextureImporter ti, TextureImporterPlatformSettings setting )
{
bool needReimport = false;
if (!setting.overridden)
{
setting.overridden = true;
needReimport = true;
}
//带透明通道
if (ti.DoesSourceTextureHaveAlpha()
|| ti.textureShape == TextureImporterShape.TextureCube
)
{
if (setting.format != TextureImporterFormat.ASTC_RGBA_5x5)
{
needReimport = true;
setting.format = TextureImporterFormat.ASTC_RGBA_5x5;
}
//} else //不带透明通道
//{
// if (setting.format != TextureImporterFormat.ETC2_RGB4)
// {
// needReimport = true;
// setting.format = TextureImporterFormat.ETC2_RGB4;
// }
}
if (setting.compressionQuality < 100)
{
setting.compressionQuality = 100;
needReimport = true;
}
return needReimport;
}
[MenuItem("Assets/优化工具/Spine贴图优化工具")]
static void OnMenuItem_SceneTextureTest()
{
var res = AssetDatabase.FindAssets("t:Texture", new string[] { "Assets/ManagedResources/Effects/Spine" });
if (res == null || res.Length < 1) return;
for (int i = 0, imax = res.Length ; i < res.Length ; i++)
{
var path = AssetDatabase.GUIDToAssetPath(res[i]);
EditorUtility.DisplayProgressBar(string.Format("{0}/{1}", i, imax), path, i * 1f / imax);
SettingTex(path);
}
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
EditorUtility.ClearProgressBar();
}
}
}