/* This needs to live in a folder named "Editor", or it won't work. Doesn't have to be named "BobTheBuilder", though. Name it whatever you want! */ using System; using UnityEditor; using UnityEngine; public class BobTheBuilder { /* List of scenes to include in the build */ public static string[] scenes = { "Assets/Scenes/Game.unity" }; [MenuItem("GAMENAME/Build/All Targets")] public static void BuildAll() { BuildHTML5(); BuildWindows(); BuildMacOS(); BuildiOS(); BuildAndroid(); } [MenuItem("GAMENAME/Build/HTML5 (release)")] public static void BuildHTML5() { Debug.Log("Starting HTML5 Build!"); BuildPipeline.BuildPlayer( scenes, "Build/HTML5", BuildTarget.WebGL, BuildOptions.None); } [MenuItem("GAMENAME/Build/Windows (release)")] public static void BuildWindows() { Debug.Log("Starting Windows Build!"); BuildPipeline.BuildPlayer( scenes, "Build/Windows/GAMENAME.exe", BuildTarget.StandaloneWindows, BuildOptions.None); } [MenuItem("GAMENAME/Build/macOS (release)")] public static void BuildMacOS() { Debug.Log("Starting macOS Build!"); BuildPipeline.BuildPlayer( scenes, "Build/macOS/GAMENAME.app", BuildTarget.StandaloneOSX, BuildOptions.None); } [MenuItem("GAMENAME/Build/Android (release)")] static void BuildAndroid() { Debug.Log("Starting Android Build!"); /* We absolutely do not want to ever store secrets in code (or even add them to version control), so instead we'll fetch them from the system environment. Don't forget to set these environment variables before invoking the build script! */ PlayerSettings.Android.keystorePass = Environment.GetEnvironmentVariable("KEY_STORE_PASS"); PlayerSettings.Android.keyaliasPass = Environment.GetEnvironmentVariable("KEY_ALIAS_PASS"); BuildPipeline.BuildPlayer( scenes, "Build/Android/GAMENAME.aab", BuildTarget.Android, BuildOptions.None); } [MenuItem("GAMENAME/Build/iOS (release)")] static void BuildiOS() { Debug.Log("Starting iOS Build!"); BuildPipeline.BuildPlayer( scenes, "Build/iOS", BuildTarget.iOS, BuildOptions.AcceptExternalModificationsToPlayer); } }