Skip to content

Instantly share code, notes, and snippets.

@xuyennguyen
Forked from favoyang/BuildAddressables.cs
Created June 25, 2022 17:20
Show Gist options
  • Save xuyennguyen/aa0a5e33d23309e379a71df24b3835d4 to your computer and use it in GitHub Desktop.
Save xuyennguyen/aa0a5e33d23309e379a71df24b3835d4 to your computer and use it in GitHub Desktop.
Build addressable bundles when clicking the build button
/// <summary>
/// The script gives you choice to whether to build addressable bundles when clicking the build button.
/// For custom build script, call PreExport method yourself.
/// For cloud build, put BuildAddressablesProcessor.PreExport as PreExport command.
/// Discussion: https://forum.unity.com/threads/how-to-trigger-build-player-content-when-build-unity-project.689602/
///
/// License: The MIT License https://opensource.org/licenses/MIT
/// </summary>
using UnityEditor;
using UnityEditor.AddressableAssets;
using UnityEditor.AddressableAssets.Settings;
using UnityEngine;
using System.Collections;
class BuildAddressablesProcessor
{
/// <summary>
/// Run a clean build before export.
/// </summary>
static public void PreExport()
{
Debug.Log("BuildAddressablesProcessor.PreExport start");
AddressableAssetSettings.CleanPlayerContent(
AddressableAssetSettingsDefaultObject.Settings.ActivePlayerDataBuilder);
AddressableAssetSettings.BuildPlayerContent();
Debug.Log("BuildAddressablesProcessor.PreExport done");
}
[InitializeOnLoadMethod]
private static void Initialize()
{
BuildPlayerWindow.RegisterBuildPlayerHandler(BuildPlayerHandler);
}
private static void BuildPlayerHandler(BuildPlayerOptions options)
{
if (EditorUtility.DisplayDialog("Build with Addressables",
"Do you want to build a clean addressables before export?",
"Build with Addressables", "Skip"))
{
PreExport();
}
BuildPlayerWindow.DefaultBuildMethods.BuildPlayer(options);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment