From 857a41e877a8f0e282463beef8e8b6dcac60ec01 Mon Sep 17 00:00:00 2001 From: Daniel <79565087+danielchipman@users.noreply.github.com> Date: Sat, 15 Apr 2023 10:23:51 -0700 Subject: [PATCH] Build subtarget support for Unity 2021.2+ (#532) * Subtarget support for Unity 2021.2+ Allows passing the -standaloneBuildSubtarget parameter via customParameters in order to facilitate dedicated server builds. Since Unity introduced the subtarget option in 2021.2, this parameter only takes effect in supported Unity versions. * Fix build subtarget compatibility Certain versions of Unity do not have a value for `NoSubtarget`. Using `default` will be more robust against churn in this area of Unity's API. --- .../Assets/Editor/UnityBuilderAction/Builder.cs | 13 ++++++++++++- .../UnityBuilderAction/Input/ArgumentsParser.cs | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Builder.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Builder.cs index 50e25fb7..d7cba912 100644 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Builder.cs +++ b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Builder.cs @@ -29,12 +29,23 @@ namespace UnityBuilderAction } } +#if UNITY_2021_2_OR_NEWER + // Determine subtarget + StandaloneBuildSubtarget buildSubtarget; + if (!options.TryGetValue("standaloneBuildSubtarget", out var subtargetValue) || !Enum.TryParse(subtargetValue, out buildSubtarget)) { + buildSubtarget = default; + } +#endif + // Define BuildPlayer Options var buildPlayerOptions = new BuildPlayerOptions { scenes = scenes, locationPathName = options["customBuildPath"], target = (BuildTarget) Enum.Parse(typeof(BuildTarget), options["buildTarget"]), - options = buildOptions + options = buildOptions, +#if UNITY_2021_2_OR_NEWER + subtarget = (int) buildSubtarget +#endif }; // Set version for this build diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs index c53b7d37..5beeb8df 100644 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs +++ b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs @@ -28,6 +28,7 @@ namespace UnityBuilderAction.Input } if (!Enum.IsDefined(typeof(BuildTarget), buildTarget)) { + Console.WriteLine($"{buildTarget} is not a defined {nameof(BuildTarget)}"); EditorApplication.Exit(121); }