Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


IPreprocessBuildWithContext

Implement this interface to execute code at the start of the Player, AssetBundle, or content directory build process.
Read time 2 minutesLast updated 13 days ago

Definition

public interface IPreprocessBuildWithContext : IOrderedCallback

Remarks

At the start of a Player, AssetBundle, or content directory build, Unity uses the _callbackOrder property on each implementation to determine the order in which to invoke the callbacks.
This callback can be useful for automated tasks and ensuring your build environment is correctly configured.
You can't invoke another build from inside this callback. To invoke a content build at the start of a Player build, use BuildPlayerProcessor.PrepareForBuild instead.
Example usages include:
  • For validation checks, for example confirming required build settings, environment variables, content, or other project-specific conditions. When possible you can automatically fix problems by changing settings, or you can fail the build.
  • To make sure required Assets are included in the build. Refer to PlayerSettings.SetPreloadedAssets.
  • To generate version numbers, change logs, link.xml files, or other content that must be regenerated before each build.
  • For logging, reporting, or sending analytics.
To fail the build from this callback, throw a BuildFailedException. It reports a clear message without a call stack and fails the build whether or not the build uses strict mode. A logged error, such as from
Debug.LogError
, fails the build only when the build uses strict mode (BuildOptions.StrictMode, BuildAssetBundleOptions.StrictMode, or BuildContentOptions.FailBuildWhenErrorsLogged).
Note: Build callbacks are a powerful feature, but it is strongly recommended that their implementations maintain deterministic build outputs. The result of a build should be predictable and reproducible, based on the project’s content, the Unity version, and installed packages. Introducing environment-specific behavior, external dependencies, randomness, or other non-deterministic elements can lead to outcomes that are challenging to debug or reproduce. This unpredictability might compromise the efficiency and accuracy of incremental builds or incremental upgrades.
The main difference between this interface and IPreprocessBuildWithReport or IPreprocessBuild is that this callback is invoked on AssetBundle and content directory builds as well as Player builds. For more information about build callbacks, refer to Use build callbacks

Examples

using System;using UnityEditor.Build;class BuildScheduleEnforcer : IPreprocessBuildWithContext{ public int callbackOrder { get { return 100; } } public void OnPreprocessBuild(BuildCallbackContext ctx) { if (DateTime.Now.DayOfWeek == DayOfWeek.Thursday) // Force the build to fail. This message will appear in the console and Editor log. throw new BuildFailedException("No builds are allowed on Thursdays"); }}

Methods

Method

Description

OnPreprocessBuildImplement this method to receive a callback before the build is started.

Inheritance