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++;
                }

格式对比如下:

posted @ 2019-12-25 16:19  ZeroyiQ  阅读(1862)  评论(0编辑  收藏  举报