Unity 6.3
0 онлайн 2 гостей 3 в системе
Вход

BuildReport

класс в UnityEditor.Build.Reporting

Наследуется от:Object

Описание

BuildReport API предоставляет информацию о процессе сборки Unity.

Объект BuildReport возвращается BuildPipeline.BuildPlayer и может быть использован для обнаружения информации о выводе файлов, выполненных шагах сборки и другой информации, специфической для платформы, такой как удаление собственного кода.

Для сборок AssetBundle объект BuildReport доступен при вызове GetLatestReport сразу после вызова BuildPipeline.BuildAssetBundles.

using System.IO;
using System.Linq;
using System.Text;
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEngine;

public class BuildReportExample { [MenuItem("Example/Build AssetBundle")] static public void BuildBundles() { string buildOutputDirectory = "BuildOutput"; if (!Directory.Exists(buildOutputDirectory)) Directory.CreateDirectory(buildOutputDirectory);

var bundleDefinitions = new AssetBundleBuild[] { new AssetBundleBuild() { assetBundleName = "MyBundle", assetNames = new string[] { "Assets/Scenes/SampleScene.unity" } } };

BuildPipeline.BuildAssetBundles( buildOutputDirectory, bundleDefinitions, BuildAssetBundleOptions.ForceRebuildAssetBundle, EditorUserBuildSettings.activeBuildTarget);

BuildReport report = BuildReport.GetLatestReport(); if (report != null) { var sb = new StringBuilder(); sb.AppendLine("Build result : " + report.summary.result); sb.AppendLine("Build size : " + report.summary.totalSize + " bytes"); sb.AppendLine("Build time : " + report.summary.totalTime); sb.AppendLine("Error summary : " + report.SummarizeErrors()); sb.Append(LogBuildReportSteps(report)); sb.AppendLine(LogBuildMessages(report)); Debug.Log(sb.ToString()); } else { // Certain errors like invalid input can fail the build immediately, with no BuildReport written Debug.Log("AssetBundle build failed"); } }

public static string LogBuildReportSteps(BuildReport buildReport) { var sb = new StringBuilder();

sb.AppendLine($"Build steps: {buildReport.steps.Length}"); int maxWidth = buildReport.steps.Max(s => s.name.Length + s.depth) + 3; foreach (var step in buildReport.steps) { string rawStepOutput = new string('-', step.depth + 1) + ' ' + step.name; sb.AppendLine($"{rawStepOutput.PadRight(maxWidth)}: {step.duration:g}"); } return sb.ToString(); }

public static string LogBuildMessages(BuildReport buildReport) { var sb = new StringBuilder(); foreach (var step in buildReport.steps) { foreach (var message in step.messages) // If desired, this logic could ignore any Info or Warning messages to focus on more serious messages sb.AppendLine($"[{message.type}] {message.content}"); }

string messages = sb.ToString(); if (messages.Length > 0) return "Messages logged during Build:\n" + messages; else return ""; } }

// For the purpose of demonstration, this callback logs different types of errors and forces a build failure [BuildCallbackVersion(1)] class MyTroublesomeBuildCallback : IProcessSceneWithReport { public int callbackOrder { get { return 0; } } public void OnProcessScene(UnityEngine.SceneManagement.Scene scene, BuildReport report) { Debug.Log("MyTroublesomeBuildCallback called for " + scene.name); Debug.LogError("Logging an error");

throw new BuildFailedException("Forcing the build to stop"); } }

Свойства

Свойство Описание
packedAssetsМассив всех PackedAssets, созданных процессом сборки.
scenesUsingAssetsНеобязательный массив ScenesUsingAssets, генерируемый процессом сборки, если BuildOptions.DetailedBuildReport использовался во время сборки.
stepsМассив всех BuildSteps, которые произошли во время процесса сборки.
strippingInfoОбъект StrippingInfo для сборки.
summaryBuildSummary, содержащий общую статистику и данные о процессе сборки.

Открытые методы

Метод Описание
GetFilesВозвращает массив всех файлов, выводимых процессом сборки.
SummarizeErrorsВозвращает строку, обобщающую любые ошибки, которые произошли во время сборки

Статические методы

Метод Описание
GetLatestReportВозвращает отчет о сборке, созданный последним проигрывателем или сборкой AssetBundle
Унаследованные члены 4

Свойства

СвойствоОписание
hideFlagsДолжен ли объект быть скрытым, сохраняться с Scene или изменяться пользователем?
nameИмя объекта.

Открытые методы

МетодОписание
GetInstanceIDПолучает экземпляр ID объекта.
ToStringВозвращает имя объекта.

Статические методы

МетодОписание
DestroyУдаляет GameObject, компонент или ресурс.
DestroyImmediateНемедленно уничтожает указанный объект. Используйте с осторожностью и только в режиме редактирования.
DontDestroyOnLoadНе уничтожать целевой Объект при загрузке нового Scene.
FindAnyObjectByTypeПолучает любой активный загруженный объект типа Type.
FindFirstObjectByTypeПолучает первый активный загруженный объект типа Type.
FindObjectsByTypeПолучает список всех загруженных объектов типа Type.
InstantiateКлонирует исходный объект и возвращает клон.
InstantiateAsyncЗахватывает моментальный снимок первоначального объекта (который должен быть связан с каким-либо GameObject) и возвращает AsyncInstantiateOperation.

Операторы

ОператорОписание
boolСуществует ли объект?
оператор!=Сравнивает, если два объекта ссылаются на разные объекты.
оператор ==Сравнение двух ссылок на объекты для определения того, относятся ли они к одному и тому же объекту.