登录
  • 欢迎访问 Sharezer Blog

UnityEditor 查找项目内文件大小

Editor sharezer 2738次浏览 已收录 0个评论

为了从资源上优化安装包的大小,写了一个工具

点击查找,列出所以文件,并按从大到小的顺序排序

先上一下效果图

UnityEditor 查找项目内文件大小

/// <summary>
/// 定义文件结构体
/// </summary>
public struct FileAttribute
{
    public string path;     //路径
    public long size;       //文件大小
    public string sizeStr;  //转成MB后的显示值
}
/// <summary>
/// 排序规则
/// </summary>
/// <param name="obj1"></param>
/// <param name="obj2"></param>
/// <returns></returns>
private int SortFileAttrCompare(FileAttribute obj1, FileAttribute obj2)
{
    int res = 0;
    if (obj1.size > obj2.size)
    {
        res = -1;
    }
    else if (obj1.size < obj2.size)
    {
        res = 1;
    }
    return res;
}
/// <summary>
/// 搜索文件
/// </summary>
void SearchResInfo()
{
    fileList.Clear();
    fbxSortList.Clear();
    var allObjects = AssetDatabase.GetAllAssetPaths();
    int i = 0;
    foreach (var path in allObjects)
    {
        EditorUtility.DisplayProgressBar("查找中", path, (float)i / (float)allObjects.Length);
        System.IO.FileInfo file = new System.IO.FileInfo(path);
        if(file != null && file.Exists)
        {
            FileAttribute fileAttr;
            fileAttr.path = path;
            fileAttr.size = file.Length;

            float tempFileLength = 0;
            //转成MB
            if(file.Length > 1024)
                tempFileLength = file.Length / 1024.0f / 1024.0f;

            if(tempFileLength > 0)
            {
                int strPos = tempFileLength.ToString().IndexOf(".");
                fileAttr.sizeStr = tempFileLength.ToString().Substring(0, strPos + 3) + " MB";
            }
            else
            {
                fileAttr.sizeStr = "0.00 MB";
            }


            fileList.Add(fileAttr);
        }
        i++;
    }

    fbxSortList = new List<FileAttribute>(fileList);
    fbxSortList.Sort(SortFileAttrCompare);
    EditorUtility.ClearProgressBar();
}


Sharezer , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明UnityEditor 查找项目内文件大小
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址