Unity - 性能优化实战04 - Texture优化

UPR优化建议

  • 纹理资源大小2的幂次:大小非2的幂次的纹理资源将无法使用ETC1和PVRTC压缩格式。在导入时自动伸缩为2的幂次也可能会导致内存占用或者贴图质量问题。和美术协商按照2的幂次出图
  • 纹理的原始大小不是2的幂次;导入时自动扩大成2的幂次会导致内存占用上升。和美术协商按照2的幂次出图
  • 纹理的原始大小不是2的幂次;导入时自动缩小成2的幂次可能会影响贴图质量。和美术协商按照2的幂次出图
  • 纹理资源的读/写标志应被禁用:应禁用不需要读写标志的纹理资源

  • 未压缩的纹理应该禁用mipmap:检查Inspector -> Advanced -> Generate Mip Maps选项
  • Android平台纹理压缩格式

    带有OpenGLES3或更高版本的Android的纹理格式应该是ASTC

    对安卓平台使用默认值,但格式不是Automatic
  • 检查纹理资源的过滤模式

    纹理的过滤模式一般不建议使用Trilinear,会占用较高的计算资源
  • 检查纹理资源alpha通道

    如果纹理的alpha通道全部为0,或者全部为255,可以认为其中不包含有效信息,此时应禁用'Alpha源'标志,否则会浪费这部分的内存
  • 检查纯色纹理

    纯色纹理的使用可能可以由一些设置来代替。由于某些情况下纯色纹理是必不可少的,此警告仅会在所使用的纹理较大(大于设定值, 默认为16x16)时才会触发
  • 检查重复纹理
  • 检查纹理是否过大

    过大的纹理资源会更多的消耗内存
  • 检查纹理重复环绕模式

    Repeat Wrap模式可能会导致纹理上出现意外的边缘
  • 检查精灵图纹理填充率

    填充率是精灵图分割后的有效面积与总面积的比率,较低的精灵图纹理填充率会导致显存的浪费。Custom Parameters: fillRateThreshold : 0.5onlyCheckSprite : True

自定义导入设置

可以看到上文有很多要优化的内容,一个一个找到修改真的费时费力,所以写了一个工具保证了资源的规范性。当然还是有很多不完善的后续一点点补充进来

using System.IO;
using UnityEditor;
using UnityEngine;

namespace Game.Editor
{
    public class CustomAssetImporter : AssetPostprocessor
    {
        private void OnPreprocessTexture()
        {
            var importer = assetImporter as TextureImporter;

            //设置Read/Write Enabled开关,不勾选
            importer.isReadable = false;

            // Assets/Artworks下是美术库的全部贴图,分门别类的设置不同最大尺寸
            if (assetPath.StartsWith("Assets/Suntail Village/Textures"))
            {
                string fileName = Path.GetFileNameWithoutExtension(assetPath);
                if (fileName.EndsWith("_1024"))
                    importer.maxTextureSize = 1024;
                else if (fileName.EndsWith("_2048"))
                    importer.maxTextureSize = 2048;
                else
                    importer.maxTextureSize = 512;

                var androidSetting = importer.GetPlatformTextureSettings(BuildTargetGroup.Android.ToString());
                androidSetting.maxTextureSize = importer.maxTextureSize;
                if (!IsAllowTextureFormat(androidSetting.format))
                {
                    androidSetting.format = TextureImporterFormat.ASTC_8x8;
                }
                androidSetting.overridden = true;
                importer.SetPlatformTextureSettings(androidSetting);
            }
            // UI大图资源,设置好指定的安卓格式
            if (assetPath.StartsWith("Assets/Main/SpriteBig"))
            {
                var androidSetting = importer.GetPlatformTextureSettings(BuildTargetGroup.Android.ToString());
                androidSetting.maxTextureSize = importer.maxTextureSize;
                if (!IsAllowTextureFormat(androidSetting.format))
                {
                    androidSetting.format = TextureImporterFormat.ASTC_8x8;
                }
                androidSetting.overridden = true;
                importer.SetPlatformTextureSettings(androidSetting);
            }
            if (importer.assetPath.StartsWith("Assets/Main/Sprites"))
            {
                //设置UI纹理Generate Mipmaps
                importer.mipmapEnabled = false;
                //设置UI纹理WrapMode
                importer.wrapMode = TextureWrapMode.Clamp;
            }
        }

        bool IsAllowTextureFormat(TextureImporterFormat format)
        {
            return format == TextureImporterFormat.ASTC_4x4 || format == TextureImporterFormat.ASTC_8x8 || format == TextureImporterFormat.ETC2_RGBA8;
        }
    }
}

优化对比

  • Memory视图中,Texture2D内存优化了将近300M,如果大家觉得压缩太狠,可以调整合适自己的分辨率
  • Profiler中整体内存峰值200M,纹理也是显示将近300M的优化
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容