Skip to content

Instantly share code, notes, and snippets.

@favoyang
Last active June 7, 2024 18:10
Show Gist options
  • Save favoyang/cd2cf2ed9df7e2538f3630610c604c51 to your computer and use it in GitHub Desktop.
Save favoyang/cd2cf2ed9df7e2538f3630610c604c51 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);
}
}
@seyoung-hyun
Copy link

Thanks your code :)
Can I use your code in my commercial app?
Please let me know how I can use the code for commercial distribution.

@favoyang
Copy link
Author

Can I use your code in my commercial app?

My pleasure. Just added a note for the MIT license.

@xuyennguyen
Copy link

xuyennguyen commented Jun 26, 2022

@favoyang when calling PreExport function it will build both local and remote groups, right?

@favoyang
Copy link
Author

@favoyang when calling PreExport function it will build both local and remote groups, right?

@xuyennguyen it builds your currently active profile.

https://docs.unity3d.com/Packages/[email protected]/manual/BuildPlayerContent.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment