-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: build script for windows sample app
- Loading branch information
Showing
1 changed file
with
92 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,60 +1,121 @@ | ||
#if UNITY_EDITOR_WIN | ||
|
||
using UnityEngine; | ||
using UnityEditor; | ||
using UnityEditor.SceneManagement; | ||
using AltTester.AltTesterUnitySDK.Editor; | ||
using AltTester.AltTesterUnitySDK; | ||
using System; | ||
using System.IO; | ||
using UnityEditor; | ||
using UnityEditor.Build.Reporting; | ||
using UnityEngine; | ||
|
||
public class WindowsBuildScript | ||
public class WindowsBuilder | ||
{ | ||
private const string DefaultBuildPath = "Builds/Windows64/SampleApp.exe"; | ||
|
||
static void Build() | ||
{ | ||
BuildPlayer(DefaultBuildPath, BuildOptions.None); | ||
} | ||
|
||
static void BuildForAltTester() | ||
{ | ||
BuildPlayer(DefaultBuildPath, BuildOptions.Development | BuildOptions.IncludeTestAssemblies | BuildOptions.AutoRunPlayer, true); | ||
} | ||
|
||
private static void BuildPlayer(string defaultBuildPath, BuildOptions buildOptions, bool setupForAltTester = false) | ||
{ | ||
try | ||
{ | ||
BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions(); | ||
buildPlayerOptions.scenes = new string[] { | ||
string buildPath = GetBuildPathFromArgs(defaultBuildPath); | ||
BuildPlayerOptions buildPlayerOptions = CreateBuildPlayerOptions(buildPath, buildOptions); | ||
|
||
if (setupForAltTester) | ||
{ | ||
SetupAltTester(buildPlayerOptions); | ||
} | ||
|
||
var results = BuildPipeline.BuildPlayer(buildPlayerOptions); | ||
|
||
if (setupForAltTester) | ||
{ | ||
// Clean up AltTester settings after build | ||
AltBuilder.RemoveAltTesterFromScriptingDefineSymbols(BuildTargetGroup.Standalone); | ||
RemoveAltFromScene(buildPlayerOptions.scenes[0]); | ||
} | ||
} | ||
catch (Exception exception) | ||
{ | ||
Debug.LogException(exception); | ||
} | ||
} | ||
|
||
private static string GetBuildPathFromArgs(string defaultBuildPath) | ||
{ | ||
string[] args = Environment.GetCommandLineArgs(); | ||
for (int i = 0; i < args.Length; i++) | ||
{ | ||
if (args[i] == "--buildPath" && i + 1 < args.Length) | ||
{ | ||
return args[i + 1]; | ||
} | ||
} | ||
return defaultBuildPath; | ||
} | ||
|
||
private static BuildPlayerOptions CreateBuildPlayerOptions(string buildPath, BuildOptions buildOptions) | ||
{ | ||
return new BuildPlayerOptions | ||
{ | ||
scenes = new[] | ||
{ | ||
"Assets/Scenes/SelectAuthMethod.unity", | ||
"Assets/Scenes/UnauthenticatedScene.unity", | ||
"Assets/Scenes/AuthenticatedScene.unity", | ||
"Assets/Scenes/ZkEvmGetBalance.unity", | ||
"Assets/Scenes/ZkEvmGetTransactionReceipt.unity", | ||
"Assets/Scenes/ZkEvmSendTransaction.unity", | ||
"Assets/Scenes/ImxNftTransfer.unity" | ||
}; | ||
}, | ||
locationPathName = buildPath, | ||
target = BuildTarget.StandaloneWindows64, | ||
options = buildOptions | ||
}; | ||
} | ||
|
||
buildPlayerOptions.locationPathName = "Builds/Windows64/SampleApp.exe"; | ||
buildPlayerOptions.target = BuildTarget.StandaloneWindows64; | ||
buildPlayerOptions.options = BuildOptions.Development | BuildOptions.IncludeTestAssemblies | BuildOptions.AutoRunPlayer; | ||
private static void SetupAltTester(BuildPlayerOptions buildPlayerOptions) | ||
{ | ||
AltBuilder.AddAltTesterInScriptingDefineSymbolsGroup(BuildTargetGroup.Standalone); | ||
AltBuilder.CreateJsonFileForInputMappingOfAxis(); | ||
|
||
// Setup for AltTester | ||
var buildTargetGroup = BuildTargetGroup.Standalone; | ||
AltBuilder.AddAltTesterInScriptingDefineSymbolsGroup(buildTargetGroup); | ||
if (buildTargetGroup == UnityEditor.BuildTargetGroup.Standalone) | ||
AltBuilder.CreateJsonFileForInputMappingOfAxis(); | ||
var instrumentationSettings = new AltInstrumentationSettings(); | ||
AltBuilder.InsertAltInScene(buildPlayerOptions.scenes[0], instrumentationSettings); | ||
var instrumentationSettings = new AltInstrumentationSettings(); | ||
AltBuilder.InsertAltInScene(buildPlayerOptions.scenes[0], instrumentationSettings); | ||
} | ||
|
||
BuildReport report = BuildPipeline.BuildPlayer(buildPlayerOptions); | ||
AltBuilder.RemoveAltTesterFromScriptingDefineSymbols(BuildTargetGroup.Standalone); | ||
public static void RemoveAltFromScene(string scene) | ||
{ | ||
Debug.Log("Removing AltTesterPrefab from the [" + scene + "] scene."); | ||
|
||
if (report.summary.result == BuildResult.Succeeded) | ||
{ | ||
Debug.Log("Build succeeded: " + report.summary.totalSize + " bytes"); | ||
} | ||
else | ||
{ | ||
Debug.LogError("Build failed"); | ||
} | ||
var sceneToModify = EditorSceneManager.OpenScene(scene); | ||
|
||
// Find the AltTesterPrefab instance in the scene | ||
var altRunner = GameObject.FindObjectOfType<AltRunner>(); | ||
|
||
if (altRunner != null) | ||
{ | ||
// Destroy the AltTesterPrefab instance | ||
GameObject.DestroyImmediate(altRunner.gameObject); | ||
|
||
// Mark the scene as dirty and save it | ||
EditorSceneManager.MarkSceneDirty(sceneToModify); | ||
EditorSceneManager.SaveOpenScenes(); | ||
|
||
Debug.Log("AltTesterPrefab successfully removed from the [" + scene + "] scene."); | ||
} | ||
catch (Exception exception) | ||
else | ||
{ | ||
Debug.LogException(exception); | ||
Debug.LogWarning("AltTesterPrefab was not found in the [" + scene + "] scene."); | ||
} | ||
} | ||
|
||
} | ||
|
||
#endif | ||
#endif |