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.
This commit is contained in:
Daniel 2023-04-15 10:23:51 -07:00 committed by GitHub
parent 3032a4ab97
commit 857a41e877
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 1 deletions

View File

@ -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 // Define BuildPlayer Options
var buildPlayerOptions = new BuildPlayerOptions { var buildPlayerOptions = new BuildPlayerOptions {
scenes = scenes, scenes = scenes,
locationPathName = options["customBuildPath"], locationPathName = options["customBuildPath"],
target = (BuildTarget) Enum.Parse(typeof(BuildTarget), options["buildTarget"]), 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 // Set version for this build

View File

@ -28,6 +28,7 @@ namespace UnityBuilderAction.Input
} }
if (!Enum.IsDefined(typeof(BuildTarget), buildTarget)) { if (!Enum.IsDefined(typeof(BuildTarget), buildTarget)) {
Console.WriteLine($"{buildTarget} is not a defined {nameof(BuildTarget)}");
EditorApplication.Exit(121); EditorApplication.Exit(121);
} }