• Unity减少发布打包文件的体积——获取精灵图片的信息限制它的大小


    在这里插入图片描述

    一、起因

    一个工程,打包成webGL且压缩成zip文件后,接近400M,后来把大的精灵图片设置最大尺寸,降低大小后,再次发布,zip文件缩减到250M

    二、如何一键获得工程里面的精灵图片信息

    在这里插入图片描述

    三、获取精灵图片信息

    1、查找项目中的所有精灵图片

    //查找工程文件中的所有精灵图片
    string[] guids = AssetDatabase.FindAssets("t:Sprite");
    
    • 1
    • 2

    2、获取精灵图片的资源位置

    string assetPath = AssetDatabase.GUIDToAssetPath("精灵id");
    
    • 1

    3、获取精灵对象的Inspector参数信息

    TextureImporter texImporter = AssetImporter.GetAtPath("精灵图片资源位置") as TextureImporter;
    int maxSize = texImporter.maxTextureSize;
    
    • 1
    • 2

    4、格式化字符串并保存到文件

    下图为标题的信息,同理,每一张精灵图片的信息也是如此用【Tab】分割

    var header = $"精灵名字\t位置\tMaxSize\tnative resolution\t大小\r";
    ...
    ...
    var line = $"{sprite.name}\t{assetPath}\t{maxSize}\t{sprite.texture.height} * {sprite.texture.width}\t{sprite.texture.height * sprite.texture.width}\r";
    
    • 1
    • 2
    • 3
    • 4

    调用 File.WriteAllText(fileName,content)保存到文件中

    5、对于那些特别大的图,设置MaxSize进行限制

    …手工或者用代码一键设置

    四、附录代码

    using System;
    using UnityEngine;
    using UnityEditor;
    using System.Linq;
    using System.IO;
    
    class Example : EditorWindow
    {
    #if UNITY_EDITOR
        [MenuItem("模型处理/输出工程文件中所有精灵图片的信息")]
    #endif
        static void FindAllSprites()
        {
            //获取精灵信息
            var sprites = FindAllTextures();
            Debug.Log(sprites);
            //保存到文档
            var fileName = $"D:\\图片信息汇总{DateTime.Now.ToString().Replace('/','_').Replace(':','.')}.txt";
            Debug.Log($"{fileName}");
            File.WriteAllText(fileName,sprites);
        }
    
        /// 
        /// 查找工程中所有的精灵对象,获取他们的分辨率信息
        /// ==========================================================输出内容格式化的string对象
        /// 精灵名字      | 位置 | MaxSize | tnative resolution | 大小
        /// ----------------------------------------------------------
        ///  ...            ...     ...        ...                 ...
        /// ==========================================================
        /// 
        public static string FindAllTextures()
        {
            //查找工程文件中的所有精灵图片
            string[] guids = AssetDatabase.FindAssets("t:Sprite");
            Debug.Log($"Found {guids.Length} sprite assets.");
    
            var header = $"精灵名字\t位置\tMaxSize\tnative resolution\t大小\r";
            var body = "";
            foreach (string guid in guids)
            {
                string assetPath = AssetDatabase.GUIDToAssetPath(guid);
                Sprite sprite = AssetDatabase.LoadAssetAtPath<Sprite>(assetPath);
    
                TextureImporter texImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter;
                int maxSize = texImporter.maxTextureSize;
                
    
                //Debug.Log($"Sprite: {sprite.name}, Path: {assetPath}, MaxSize: {maxSize},native resolution:{sprite.texture.height} * {sprite.texture.width}");
                var line = $"{sprite.name}\t{assetPath}\t{maxSize}\t{sprite.texture.height} * {sprite.texture.width}\t{sprite.texture.height * sprite.texture.width}\r";
                body = body + line;
            }
    
            return $"{header}\r{body}";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    五、抛砖引玉

    精力充沛的话,你也可以写一个功能,把影响build后打包体积的各种东西都统计一遍,然后对症下药,比如scene文件,fbx,prefab资源等等。

  • 相关阅读:
    二叉树链式存储结构
    2023年辽宁省数学建模竞赛C题用科幻思维研究智能化战争指挥决策
    pyinstaller 自动更新版本
    计算机毕业设计之java+javaweb的烯烃厂压力管道管理平台
    2023年中国石质瓷市场供需现状及行业发展趋势分析[图]
    windows docker 部署 rocketmq
    机器学习中的决策树算法
    带您识别RJ45网口连接器/网口插座口的LED灯的平脚/斜脚,带弹/不带弹细节区分
    小程序多文件上传 Tdesign
    多商家AI智能名片商城系统(开源版)——构建高效数字化商业新生态
  • 原文地址:https://blog.csdn.net/dzj2021/article/details/132901590