IPostprocessBuildWithReport
Описание
Реализуйте этот интерфейс, чтобы выполнить код сразу после завершения сборки плеера.
Этот интерфейс заменён на IPostprocessBuildWithContext, который также работает для сборок AssetBundle. Это полезно для задач, которые необходимо выполнять на последнем этапе сборки, таких как очистка ассетов, создание аналитики или отчетов или настройка выходных данных сборки.
В качестве последнего шага сборки Player, Unity использует IOrderedCallback.callbackOrder свойство на каждой реализации, чтобы определить порядок, в котором вызывать обратные вызова.
Дополнительные ресурсы: IPreprocessBuildWithReport, BuildPipeline.BuildPlayer.
using System.Linq; using System.Text; using UnityEditor.Build; using UnityEditor.Build.Reporting; using UnityEngine;
// To try this example add this code into an Editor-only assembly, // run a Player build, and then look for the message in the console. // Note: if the build fails or is cancelled then the code will not run. class BuildPostProcessor : IPostprocessBuildWithReport { public int callbackOrder { get { return 100; } } public void OnPostprocessBuild(BuildReport report) { // Log some information from the BuildReport // Note: OnPostprocessBuild callbacks are invoked before the build is complete. // So the content of the BuildReport is not completely finalized. // For example, the summary.buildEndedAt has not been be determined, // and the incomplete "parent" BuildSteps still report 0 for their durations. var summary = report.summary;
var files = report.GetFiles(); ulong size = 0; foreach (var file in files) size += file.size;
var sb = new StringBuilder(); sb.AppendLine("Build completed"); sb.AppendLine($" Target: {summary.platform}"); sb.AppendLine($" Output Location: {summary.outputPath}"); sb.AppendLine($" Number of output files: {files.Length}"); sb.AppendLine($" Total size in bytes: {size}"); sb.AppendLine($" Starting time: {summary.buildStartedAt.ToLocalTime().ToShortTimeString()}"); sb.AppendLine();
var buildSteps = report.steps; sb.AppendLine($"Build steps: {buildSteps.Length}"); int maxWidth = buildSteps.Max(s => s.name.Length + s.depth) + 2; foreach (var step in buildSteps) { string rawStepOutput = new string('-', step.depth) + ' ' + step.name; sb.AppendLine($"{rawStepOutput.PadRight(maxWidth)}: {step.duration:g}"); }
Debug.Log(sb.ToString()); } }
Открытые методы
| Метод | Описание |
|---|---|
| OnPostprocessBuild | Реализуйте эту функцию для получения обратного вызова после завершения сборки. |