一个工程,打包成webGL且压缩成zip文件后,接近400M,后来把大的精灵图片设置最大尺寸,降低大小后,再次发布,zip文件缩减到250M
//查找工程文件中的所有精灵图片
string[] guids = AssetDatabase.FindAssets("t:Sprite");
string assetPath = AssetDatabase.GUIDToAssetPath("精灵id");
TextureImporter texImporter = AssetImporter.GetAtPath("精灵图片资源位置") as TextureImporter;
int maxSize = texImporter.maxTextureSize;
下图为标题的信息,同理,每一张精灵图片的信息也是如此用【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";
调用 File.WriteAllText(fileName,content)保存到文件中
…手工或者用代码一键设置
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}";
}
}
精力充沛的话,你也可以写一个功能,把影响build后打包体积的各种东西都统计一遍,然后对症下药,比如scene文件,fbx,prefab资源等等。