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);
                    }
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
 public static IEnumerable <BuildLayout.ExplicitAsset> EnumerateAssets(BuildLayout layout)
 {
     return(EnumerateBundles(layout).SelectMany(b => b.Files).SelectMany(f => f.Assets));
 }
Esempio n. 5
0
 public static IEnumerable <BuildLayout.File> EnumerateFiles(BuildLayout layout)
 {
     return(EnumerateBundles(layout).SelectMany(b => b.Files));
 }