Unity 图片格式一键设置

Unity 图片格式一键设置
项目常常要求工程里面的格式统一设置,研究一段时间,写了改文章,不多说直接上代码

 //设置图片格式
    private static void SetTextureFormat(TextureImporter textureImporter, Texture2D texture2d,string path,
        TextureImporterFormat androidAlpha, TextureImporterFormat androidNoAlpha, TextureImporterFormat  iosAlpha, TextureImporterFormat iosNoAlpha)
    {
        //根据路径获得文件夹目录,设置图集的packagingTag
        //string AtlasName = new DirectoryInfo(Path.GetDirectoryName(textureImporter.assetPath)).Name;
        bool isTexNeedChange = false;
        if (textureImporter.mipmapEnabled == true)
        {
            textureImporter.mipmapEnabled = false;
            isTexNeedChange = true;
        }
        if (textureImporter.isReadable)
        {
            textureImporter.isReadable = false;
            isTexNeedChange = true;
        }
        
        
        //textureImporter.textureType = TextureImporterType.Default;
        ///textureImporter.spritePackingTag = AtlasName;
        //textureImporter.wrapMode = TextureWrapMode.Clamp;
        //textureImporter.npotScale = TextureImporterNPOTScale.None;
        //textureImporter.textureFormat = TextureImporterFormat.Automatic;
        //textureImporter.textureCompression = TextureImporterCompression.Compressed;

        int SizeType = FitSize(1024);

        if (texture2d != null)
        {
            int textureSize = Mathf.Max(texture2d.height, texture2d.width);
            SizeType = FitSize(textureSize);
        }
        bool _isAndroidNeedChange = false;
        var isHaveAlpha = textureImporter.DoesSourceTextureHaveAlpha();
        var _curAnImporterSet = textureImporter.GetPlatformTextureSettings("Android");
        if (_curAnImporterSet.overridden == true && _curAnImporterSet.maxTextureSize == SizeType && _curAnImporterSet.compressionQuality == 100)
        {
            if (isHaveAlpha && _curAnImporterSet.format == androidAlpha)
            {
                _isAndroidNeedChange = false;
            }
            else if (!isHaveAlpha && _curAnImporterSet.format == androidNoAlpha)
            {
                _isAndroidNeedChange = false;
            }
            else
            {
                _isAndroidNeedChange = true;
            }
        }
        else
        {
            _isAndroidNeedChange = true;
        }

        if (_isAndroidNeedChange)
        {
            //Android端单独设置
            TextureImporterPlatformSettings setting_android = new TextureImporterPlatformSettings();
            setting_android.overridden = true;
            setting_android.name = "Android";
            setting_android.maxTextureSize = SizeType;
            setting_android.compressionQuality = 100;
            //根据是否有透明度,选择RGBA还是RGB
            if (isHaveAlpha)
            {
                setting_android.format = androidAlpha;// TextureImporterFormat.ETC2_RGBA8;
            }
            else
            {
                setting_android.format = androidNoAlpha;// TextureImporterFormat.ETC2_RGB4;
            }
            textureImporter.SetPlatformTextureSettings(setting_android);
        }

        bool _isIosNeedChange = false;
        var _curIosImporterSet = textureImporter.GetPlatformTextureSettings("iOS");
        if (_curIosImporterSet.overridden == true && _curIosImporterSet.maxTextureSize == SizeType && _curIosImporterSet.compressionQuality == 100)
        {
            if (isHaveAlpha && _curIosImporterSet.format == iosAlpha)
            {
                _isIosNeedChange = false;
            }
            else if (!isHaveAlpha && _curIosImporterSet.format == iosNoAlpha)
            {
                _isIosNeedChange = false;
            }
            else
            {
                _isIosNeedChange = true;
            }
        }
        else
        {
            _isIosNeedChange = true;
        }
        if (_isIosNeedChange)
        {
            //IOS端单独设置
            TextureImporterPlatformSettings setting_iphone = new TextureImporterPlatformSettings();
            setting_iphone.overridden = true;
            setting_iphone.name = "iOS";
            setting_iphone.compressionQuality = 100;
            setting_iphone.maxTextureSize = SizeType;
            //根据是否有透明度,选择RGBA还是RGB
            if (textureImporter.DoesSourceTextureHaveAlpha())
            {
                setting_iphone.format = iosAlpha;// TextureImporterFormat.ASTC_RGBA_5x5;
            }
            else
            {
                setting_iphone.format = iosNoAlpha;// TextureImporterFormat.ASTC_RGB_5x5;
            }
            textureImporter.SetPlatformTextureSettings(setting_iphone);
        }
        
        if (isTexNeedChange || _isAndroidNeedChange || _isIosNeedChange)
        {
            AssetDatabase.ImportAsset(path);
        }      
    }

由于项目中的图片过多,所以很有必要进行对比再设置,一个图片资源已经是需求的设置的话,最好跳过该设置操作,加快设置进度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值