static void WriteSummary(TabWriter writer, BuildLayout layout) { int ExplicitAssetCount = 0; int SceneBundleCount = 0; int AssetBundleCount = 0; ulong TotalBuildSize = 0; ulong MonoScriptSize = 0; ulong BundleOverheadSize = 0; foreach (BuildLayout.File f in BuildLayoutHelpers.EnumerateFiles(layout)) { BundleOverheadSize += f.BundleObjectInfo != null ? f.BundleObjectInfo.Size : 0; MonoScriptSize += f.MonoScriptSize; } foreach (BuildLayout.Bundle b in BuildLayoutHelpers.EnumerateBundles(layout)) { bool sceneBundle = BuildLayoutHelpers.EnumerateAssets(b).FirstOrDefault(x => x.AssetPath.EndsWith(".unity", StringComparison.OrdinalIgnoreCase)) != null; SceneBundleCount += sceneBundle ? 1 : 0; AssetBundleCount += sceneBundle ? 0 : 1; TotalBuildSize += b.FileSize; } ExplicitAssetCount = BuildLayoutHelpers.EnumerateAssets(layout).Count(); using (writer.IndentScope("Summary")) { writer.WriteLine($"Addressable Groups: {layout.Groups.Count}"); writer.WriteLine($"Explicit Assets Addressed: {ExplicitAssetCount}"); writer.WriteLine($"Total Bundle: {SceneBundleCount+AssetBundleCount} ({SceneBundleCount} Scene Bundles, {AssetBundleCount} Non-Scene Bundles)"); writer.WriteLine($"Total Build Size: {GetFriendlySize(TotalBuildSize)}"); writer.WriteLine($"Total MonoScript Size: {GetFriendlySize(MonoScriptSize)}"); writer.WriteLine($"Total AssetBundle Object Size: {GetFriendlySize(BundleOverheadSize)}"); } }
internal static void WriteBundleLayout(Stream stream, BuildLayout layout) { using (StreamWriter sw = new StreamWriter(stream)) { TabWriter writer = new TabWriter(sw); writer.WriteLine("WARNING! The formatting in this file may change in future package versions."); writer.WriteLine($"Unity Version: {UnityEngine.Application.unityVersion}"); PackageManager.PackageInfo info = PackageManager.PackageInfo.FindForAssembly(typeof(BuildLayoutPrinter).Assembly); if (info != null) { writer.WriteLine($"{info.name}: {info.version}"); } WriteSummary(writer, layout); writer.WriteLine(""); foreach (BuildLayout.Group grp in layout.Groups) { PrintGroup(writer, grp); } using (writer.IndentScope("BuiltIn Bundles")) foreach (BuildLayout.Bundle b in layout.BuiltInBundles) { PrintArchive(writer, b); } } }
public static IEnumerable <BuildLayout.Bundle> EnumerateBundles(BuildLayout layout) { foreach (BuildLayout.Bundle b in layout.BuiltInBundles) { yield return(b); } foreach (BuildLayout.Bundle b in layout.Groups.SelectMany(g => g.Bundles)) { yield return(b); } }
public static IEnumerable <BuildLayout.ExplicitAsset> EnumerateAssets(BuildLayout layout) { return(EnumerateBundles(layout).SelectMany(b => b.Files).SelectMany(f => f.Assets)); }
public static IEnumerable <BuildLayout.File> EnumerateFiles(BuildLayout layout) { return(EnumerateBundles(layout).SelectMany(b => b.Files)); }