微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Unity检测图集是否是正方形并且检测它的压缩格式是否是PVRTC

苹果中,没有etc-4的压缩格式,但是有pvrtc压缩格式,相比rgba的压缩格式,pvrtc的压缩比高很多,但是它有个特点,就是压缩完,图片会变成正方形,如果图集原始图片是长方形的,但是用了pvrtc压缩格式,就会导致图集乱了。所以我们需要判断图集是否是正方形,如果是,才设置它的压缩格式为正方形。

我们可以写个方法来检测

 

public static void CheckTextureFormat(string texturePath)
{
    using(FileStream fs = new FileStream(texturePath,FileMode.Open))
    {
        using(BinaryReader br = new BinaryReader(fs))
        {
            br.ReadInt32();
            br.ReadInt32();
            br.ReadInt32();
            br.ReadInt32();

            var widthB = br.ReadInt32();
            var wb = System.BitConverter.GetBytes(widthB);
            var width = System.BitConverter.ToInt32(new byte[]{wb[3],wb[2],wb[1],wb[0]},0);
            
            var heightB = br.ReadInt32();
            var hb = System.BitConverter.GetBytes(heightB);
            var height = System.BitConverter.ToInt32(new byte[]{hb[3],hb[2],hb[1],hb[0]},0);
            if(width != height)
            {
                //不是正方形//
                var assetPath = "Assets"+texturePath.Replace(Application.dataPath,"");
                TextureImporter imp = AssetImporter.GetAtPath(assetPath) as TextureImporter;
                var format = imp.GetAutomaticFormat("iPhone");
                if(format.ToString().ToLower().Contains("pvr"))
                {
                    Debug.Log("图片不是正方形,却使用了PVRTC压缩格式");
                }
            }
        }
    }
}

 

补充

图集压缩格式建议

 

Android

 iOS

RGB图 RGB Compressed ETC 4 bits

正方形图:RGB Compressed PVRTC 4 bits

长方形图:RGB 16bit

alpha图 RGB Compressed ETC 4 bits 正方形图:RGB Compressed PVRTC 4 bits

长方形图:RGB 16bit

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐