# PrepareForBuild(BuildPlayerContext)

> Implement this function to receive a callback before a Player build starts.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor.Build](/engine/6000.7/script-reference/unityeditor/build.md)
* **Assembly:** UnityEditor.CoreModule

```csharp
public abstract void PrepareForBuild(BuildPlayerContext buildPlayerContext)
```

### Parameters

**** (\[BuildPlayerContext]\(/engine/6000.7/script-reference/unityeditor/build/buildplayercontext)): The context for the scheduled Player build.

### Remarks

You can use this function to customize the build before Unity starts building the Player. For example, the following code example demonstrates how to include streaming assets in the Player build without placing them in your project's `StreamingAssets` folder.

This callback is a good place to confirm that the project is configured correctly before the build starts, and to fail the build early if a required setting is missing. Give validation callbacks a low [\_callbackOrder](/engine/6000.7/script-reference/unityeditor/build/iorderedcallback/callbackorder.md) value so they run before other `PrepareForBuild` callbacks.

To fail the build from this callback, throw a [BuildFailedException](/engine/6000.7/script-reference/unityeditor/build/buildfailedexception.md). It reports a clear message without a call stack.

Unlike [IPreprocessBuildWithContext](/engine/6000.7/script-reference/unityeditor/build/ipreprocessbuildwithcontext.md), you can trigger a content-only build from this callback, for example by calling [BuildPipeline.BuildContentDirectory](/engine/6000.7/script-reference/unityeditor/buildpipeline/buildcontentdirectory.md). The Addressables package uses this callback to build content during a Player build.

For more information about build callbacks, refer to [Use build callbacks](/engine/6000.7/manual/building-and-publishing/build-customize-build-pipeline/build-callbacks.md).

Additional Resources: [BuildPlayerContext.AddAdditionalPathToStreamingAssets](/engine/6000.7/script-reference/unityeditor/build/buildplayercontext/addadditionalpathtostreamingassets.md), [BuildPipeline.BuildContentDirectory](/engine/6000.7/script-reference/unityeditor/buildpipeline/buildcontentdirectory.md)

### Examples

```csharp
class PrepareBuild : UnityEditor.Build.BuildPlayerProcessor
{
    public override void PrepareForBuild(UnityEditor.Build.BuildPlayerContext buildPlayerContext)
    {
        // Add data files to the Player build's StreamingAssets folder
        // Works for files located both inside and outside the Unity project

        buildPlayerContext.AddAdditionalPathToStreamingAssets("Assets/dataFromUnityProject.txt", "dataFromUnityProject.txt");

        buildPlayerContext.AddAdditionalPathToStreamingAssets("C:/Temp/dataOutsideUnityProject.txt", "dataOutsideUnityProject.txt");
    }
}
```
