public AssetBundleBuildSizeInfo GetSizeInfo() { if (BuildType != AssetBundleBuildType.BuildAtSize) { throw new Exception($"目录{Dir}的打包方式不是尺寸打包!"); } var dirId = IOUtility.GetSomeDirPath(Dir, 3); AtSizeSetting.SizeInfo = new AssetBundleBuildSizeInfo(); var fileInfos = IOUtility.GetFileInfosAtDir(Dir, true) .Where(d => AssetBundleBuilder.EndCheck(IgnoreRule, d.FullName)) .Where(d => AssetBundleBuilder.ContainCheck(IgnoreRule, d.FullName)).ToList(); long maxSize = AtSizeSetting.PackageSize * 1024; long currentSize = 0; var bundleIndex = 0; var paths = new List <string>(); foreach (var fileInfo in fileInfos) { var path = fileInfo.FullName; path = path.ReplaceDoubleBackslash(); currentSize += fileInfo.Length; if (fileInfo.Length >= maxSize) { var assetId = Path.GetFileNameWithoutExtension(fileInfo.Name); AtSizeSetting.SizeInfo.AppOutFile(path, assetId); Debug.Log($"{fileInfo.Name} 文件大小大于尺寸分包的最大尺寸"); continue; } if (currentSize <= maxSize) { paths.Add(path); } else { AddSubPackage(); paths.Add(path); } } AddSubPackage(); // 添加最后一个子包尺寸小于分包限制的剩余资源 AtSizeSetting.SetSizeTotal(AtSizeSetting.SizeInfo.GetAssetTotal()); AssetBundleEditorDati.GetSingleDati().Save(); return(AtSizeSetting.SizeInfo); void AddSubPackage() { var subBundleId = $"{dirId}_{bundleIndex}".ToLower(); AtSizeSetting.SizeInfo.AddSubPacakage(subBundleId, paths); bundleIndex++; currentSize = 0; paths.Clear(); } }