Unity 通过代码设置贴图导入压缩格式
各平台如果不勾选 override 将不会应用单独设置而是现实默认设置。
Compression 只有 Default 设置里才能设置,Compression 与 Format 之间是映射关系。如果不勾选 override,Compression 的设置不同,在不同平台将会默认显示不同的压缩格式。
TextureImporter ti = AssetImporter.GetAtPath(m_texturePathList[i]) as TextureImporter;
if (ti == null) { continue; }
if (ti.textureType == TextureImporterType.Sprite) { continue; } // 排除 Sprite
TextureImporterPlatformSettings ti_iPhone = ti.GetPlatformTextureSettings(m_platform);
bool isModify = false;
if (ti_iPhone.overridden)
{
if (ti_iPhone.format == TextureImporterFormat.PVRTC_RGB4)
{
ti_iPhone.format = TextureImporterFormat.ASTC_RGB_4x4;
isModify =true;
}
else if (ti_iPhone.format == TextureImporterFormat.PVRTC_RGBA4)
{
ti_iPhone.format = TextureImporterFormat.ASTC_RGBA_4x4;
isModify =true;
}
}
else if (ti_iPhone.compressionQuality == (int)TextureCompressionQuality.Normal) //默认就会是PVRTC
{
ti_iPhone.overridden = true;
ti_iPhone.format = ti.DoesSourceTextureHaveAlpha() ? TextureImporterFormat.ASTC_RGBA_4x4 : TextureImporterFormat.ASTC_RGB_4x4;
isModify =true;
}
if (isModify)
{
ti.SetPlatformTextureSettings(ti_iPhone);
ti.SaveAndReimport(); // 应用并重新导入
AssetDatabase.ImportAsset(m_texturePathList[i]);
Debug.LogFormat("Texture:{0}", m_texturePathList[i]);
count++;
}
格式对比如下: