Skip to content

Commit 2d16ea8

Browse files
Document new buildProfile config option (#498)
* Document new `buildProfile` config option Relates to game-ci/unity-builder#674 Relates to game-ci/unity-builder#685 * Update BuildScript.cs with BuildProfile example * Update example/BuildScript.cs --------- Co-authored-by: David Finol <[email protected]>
1 parent 92691c9 commit 2d16ea8

File tree

2 files changed

+52
-2
lines changed

2 files changed

+52
-2
lines changed

docs/03-github/04-builder.mdx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,24 @@ _**required:** `false`_ _**default:** `""`_
162162
#### projectPath
163163

164164
Specify the path to your Unity project to be built. The path should be relative to the root of your
165-
project.
165+
repository.
166166

167-
_**required:** `false`_ _**default:** `<your project root>`_
167+
_**required:** `false`_ _**default:** `<your repository root>`_
168+
169+
#### buildProfile
170+
171+
Provide a path to a build profile. The path should be relative to the root of your Unity project
172+
(i.e. relative to `projectPath`). See the
173+
[Unity documentation](https://docs.unity3d.com/Manual/build-profiles.html) for more information on
174+
using build profiles.
175+
176+
```yaml
177+
- uses: game-ci/unity-builder@v4
178+
with:
179+
buildProfile: 'Assets/Settings/Build Profiles/WindowsDemo.asset'
180+
```
181+
182+
_**required:** `false`_ _**default:** Unity will do a platform build for the `targetPlatform`._
168183

169184
#### buildName
170185

example/BuildScript.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
using System.Linq;
55
using UnityEditor;
66
using UnityEditor.Build.Reporting;
7+
#if UNITY_6000_0_OR_NEWER
8+
using UnityEditor.Build.Profile;
9+
#endif
710

811
namespace UnityBuilderAction
912
{
@@ -89,6 +92,38 @@ public static void Build()
8992
Build(buildTarget, buildSubtarget, options["customBuildPath"]);
9093
}
9194

95+
#if UNITY_6000_0_OR_NEWER
96+
public static void BuildWithProfile()
97+
{
98+
// Gather values from args
99+
Dictionary<string, string> options = GetValidatedOptions();
100+
101+
// Load build profile from Assets folder
102+
BuildProfile buildProfile = AssetDatabase.LoadAssetAtPath<BuildProfile>(options["customBuildProfile"]);
103+
104+
// Set it as active
105+
BuildProfile.SetActiveBuildProfile(buildProfile);
106+
// Get all buildOptions from options
107+
BuildOptions buildOptions = BuildOptions.None;
108+
foreach (string buildOptionString in Enum.GetNames(typeof(BuildOptions))) {
109+
if (options.ContainsKey(buildOptionString)) {
110+
BuildOptions buildOptionEnum = (BuildOptions) Enum.Parse(typeof(BuildOptions), buildOptionString);
111+
buildOptions |= buildOptionEnum;
112+
}
113+
}
114+
// Define BuildPlayerWithProfileOptions
115+
var buildPlayerWithProfileOptions = new BuildPlayerWithProfileOptions {
116+
buildProfile = buildProfile,
117+
locationPathName = options["customBuildPath"],
118+
options = buildOptions,
119+
};
120+
121+
BuildSummary buildSummary = BuildPipeline.BuildPlayer(buildPlayerWithProfileOptions).summary;
122+
ReportSummary(buildSummary);
123+
ExitWithResult(buildSummary.result);
124+
}
125+
#endif
126+
92127
private static Dictionary<string, string> GetValidatedOptions()
93128
{
94129
ParseCommandLineArguments(out Dictionary<string, string> validatedOptions);

0 commit comments

Comments
 (0)