Unity减少发布打包文件的体积——获取精灵图片的信息限制它的大小
作者:小教学发布时间:2023-09-26分类:程序开发学习浏览:87
导读:一、起因一个工程,打包成webGL且压缩成zip文件后,接近400M,后来把大的精灵图片设置最大尺寸,降低大小后,再次发布,zip文件缩减到250M二、如何一键获得工程...
一、起因
一个工程,打包成webGL且压缩成zip文件后,接近400M,后来把大的精灵图片设置最大尺寸,降低大小后,再次发布,zip文件缩减到250M
二、如何一键获得工程里面的精灵图片信息
三、获取精灵图片信息
1、查找项目中的所有精灵图片
//查找工程文件中的所有精灵图片
string[] guids = AssetDatabase.FindAssets("t:Sprite");
2、获取精灵图片的资源位置
string assetPath = AssetDatabase.GUIDToAssetPath("精灵id");
3、获取精灵对象的Inspector参数信息
TextureImporter texImporter = AssetImporter.GetAtPath("精灵图片资源位置") as TextureImporter;
int maxSize = texImporter.maxTextureSize;
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";
调用 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);
}
/// <summary>
/// 查找工程中所有的精灵对象,获取他们的分辨率信息
/// ==========================================================输出内容格式化的string对象
/// 精灵名字 | 位置 | MaxSize | tnative resolution | 大小
/// ----------------------------------------------------------
/// ... ... ... ... ...
/// ==========================================================
/// </summary>
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资源等等。
- 程序开发学习排行
-
- 1鸿蒙HarmonyOS:Web组件网页白屏检测
- 2HTTPS协议是安全传输,为啥还要再加密?
- 3HarmonyOS鸿蒙应用开发——数据持久化Preferences
- 4记解决MaterialButton背景颜色与设置值不同
- 5鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
- 6鸿蒙HarmonyOS实战-ArkUI组件(Stack)
- 7鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)
- 8[Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- 9鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)
- 最近发表
-
- WooCommerce最好的WordPress常用插件下载博客插件模块的相关产品
- 羊驼机器人最好的WordPress常用插件下载博客插件模块
- IP信息记录器最好的WordPress常用插件下载博客插件模块
- Linkly for WooCommerce最好的WordPress常用插件下载博客插件模块
- 元素聚合器Forms最好的WordPress常用插件下载博客插件模块
- Promaker Chat 最好的WordPress通用插件下载 博客插件模块
- 自动更新发布日期最好的WordPress常用插件下载博客插件模块
- WordPress官方最好的获取回复WordPress常用插件下载博客插件模块
- Img to rss最好的wordpress常用插件下载博客插件模块
- WPMozo为Elementor最好的WordPress常用插件下载博客插件模块添加精简版