Skip to content

Commit d0bc9e9

Browse files
authored
Merge pull request #278 from immutable/chore/build-script-windows
[DX-3100] chore: build script for windows sample app
2 parents 90b1deb + 0fc7382 commit d0bc9e9

File tree

1 file changed

+92
-31
lines changed

1 file changed

+92
-31
lines changed
Lines changed: 92 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,121 @@
11
#if UNITY_EDITOR_WIN
22

3+
using UnityEngine;
4+
using UnityEditor;
5+
using UnityEditor.SceneManagement;
36
using AltTester.AltTesterUnitySDK.Editor;
47
using AltTester.AltTesterUnitySDK;
58
using System;
6-
using System.IO;
7-
using UnityEditor;
8-
using UnityEditor.Build.Reporting;
9-
using UnityEngine;
109

11-
public class WindowsBuildScript
10+
public class WindowsBuilder
1211
{
12+
private const string DefaultBuildPath = "Builds/Windows64/SampleApp.exe";
13+
14+
static void Build()
15+
{
16+
BuildPlayer(DefaultBuildPath, BuildOptions.None);
17+
}
18+
1319
static void BuildForAltTester()
20+
{
21+
BuildPlayer(DefaultBuildPath, BuildOptions.Development | BuildOptions.IncludeTestAssemblies | BuildOptions.AutoRunPlayer, true);
22+
}
23+
24+
private static void BuildPlayer(string defaultBuildPath, BuildOptions buildOptions, bool setupForAltTester = false)
1425
{
1526
try
1627
{
17-
BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
18-
buildPlayerOptions.scenes = new string[] {
28+
string buildPath = GetBuildPathFromArgs(defaultBuildPath);
29+
BuildPlayerOptions buildPlayerOptions = CreateBuildPlayerOptions(buildPath, buildOptions);
30+
31+
if (setupForAltTester)
32+
{
33+
SetupAltTester(buildPlayerOptions);
34+
}
35+
36+
var results = BuildPipeline.BuildPlayer(buildPlayerOptions);
37+
38+
if (setupForAltTester)
39+
{
40+
// Clean up AltTester settings after build
41+
AltBuilder.RemoveAltTesterFromScriptingDefineSymbols(BuildTargetGroup.Standalone);
42+
RemoveAltFromScene(buildPlayerOptions.scenes[0]);
43+
}
44+
}
45+
catch (Exception exception)
46+
{
47+
Debug.LogException(exception);
48+
}
49+
}
50+
51+
private static string GetBuildPathFromArgs(string defaultBuildPath)
52+
{
53+
string[] args = Environment.GetCommandLineArgs();
54+
for (int i = 0; i < args.Length; i++)
55+
{
56+
if (args[i] == "--buildPath" && i + 1 < args.Length)
57+
{
58+
return args[i + 1];
59+
}
60+
}
61+
return defaultBuildPath;
62+
}
63+
64+
private static BuildPlayerOptions CreateBuildPlayerOptions(string buildPath, BuildOptions buildOptions)
65+
{
66+
return new BuildPlayerOptions
67+
{
68+
scenes = new[]
69+
{
1970
"Assets/Scenes/SelectAuthMethod.unity",
2071
"Assets/Scenes/UnauthenticatedScene.unity",
2172
"Assets/Scenes/AuthenticatedScene.unity",
2273
"Assets/Scenes/ZkEvmGetBalance.unity",
2374
"Assets/Scenes/ZkEvmGetTransactionReceipt.unity",
2475
"Assets/Scenes/ZkEvmSendTransaction.unity",
2576
"Assets/Scenes/ImxNftTransfer.unity"
26-
};
77+
},
78+
locationPathName = buildPath,
79+
target = BuildTarget.StandaloneWindows64,
80+
options = buildOptions
81+
};
82+
}
2783

28-
buildPlayerOptions.locationPathName = "Builds/Windows64/SampleApp.exe";
29-
buildPlayerOptions.target = BuildTarget.StandaloneWindows64;
30-
buildPlayerOptions.options = BuildOptions.Development | BuildOptions.IncludeTestAssemblies | BuildOptions.AutoRunPlayer;
84+
private static void SetupAltTester(BuildPlayerOptions buildPlayerOptions)
85+
{
86+
AltBuilder.AddAltTesterInScriptingDefineSymbolsGroup(BuildTargetGroup.Standalone);
87+
AltBuilder.CreateJsonFileForInputMappingOfAxis();
3188

32-
// Setup for AltTester
33-
var buildTargetGroup = BuildTargetGroup.Standalone;
34-
AltBuilder.AddAltTesterInScriptingDefineSymbolsGroup(buildTargetGroup);
35-
if (buildTargetGroup == UnityEditor.BuildTargetGroup.Standalone)
36-
AltBuilder.CreateJsonFileForInputMappingOfAxis();
37-
var instrumentationSettings = new AltInstrumentationSettings();
38-
AltBuilder.InsertAltInScene(buildPlayerOptions.scenes[0], instrumentationSettings);
89+
var instrumentationSettings = new AltInstrumentationSettings();
90+
AltBuilder.InsertAltInScene(buildPlayerOptions.scenes[0], instrumentationSettings);
91+
}
3992

40-
BuildReport report = BuildPipeline.BuildPlayer(buildPlayerOptions);
41-
AltBuilder.RemoveAltTesterFromScriptingDefineSymbols(BuildTargetGroup.Standalone);
93+
public static void RemoveAltFromScene(string scene)
94+
{
95+
Debug.Log("Removing AltTesterPrefab from the [" + scene + "] scene.");
4296

43-
if (report.summary.result == BuildResult.Succeeded)
44-
{
45-
Debug.Log("Build succeeded: " + report.summary.totalSize + " bytes");
46-
}
47-
else
48-
{
49-
Debug.LogError("Build failed");
50-
}
97+
var sceneToModify = EditorSceneManager.OpenScene(scene);
98+
99+
// Find the AltTesterPrefab instance in the scene
100+
var altRunner = GameObject.FindObjectOfType<AltRunner>();
51101

102+
if (altRunner != null)
103+
{
104+
// Destroy the AltTesterPrefab instance
105+
GameObject.DestroyImmediate(altRunner.gameObject);
106+
107+
// Mark the scene as dirty and save it
108+
EditorSceneManager.MarkSceneDirty(sceneToModify);
109+
EditorSceneManager.SaveOpenScenes();
110+
111+
Debug.Log("AltTesterPrefab successfully removed from the [" + scene + "] scene.");
52112
}
53-
catch (Exception exception)
113+
else
54114
{
55-
Debug.LogException(exception);
115+
Debug.LogWarning("AltTesterPrefab was not found in the [" + scene + "] scene.");
56116
}
57117
}
118+
58119
}
59120

60-
#endif
121+
#endif

0 commit comments

Comments
 (0)