1
1
#if UNITY_EDITOR_WIN
2
2
3
+ using UnityEngine ;
4
+ using UnityEditor ;
5
+ using UnityEditor . SceneManagement ;
3
6
using AltTester . AltTesterUnitySDK . Editor ;
4
7
using AltTester . AltTesterUnitySDK ;
5
8
using System ;
6
- using System . IO ;
7
- using UnityEditor ;
8
- using UnityEditor . Build . Reporting ;
9
- using UnityEngine ;
10
9
11
- public class WindowsBuildScript
10
+ public class WindowsBuilder
12
11
{
12
+ private const string DefaultBuildPath = "Builds/Windows64/SampleApp.exe" ;
13
+
14
+ static void Build ( )
15
+ {
16
+ BuildPlayer ( DefaultBuildPath , BuildOptions . None ) ;
17
+ }
18
+
13
19
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 )
14
25
{
15
26
try
16
27
{
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
+ {
19
70
"Assets/Scenes/SelectAuthMethod.unity" ,
20
71
"Assets/Scenes/UnauthenticatedScene.unity" ,
21
72
"Assets/Scenes/AuthenticatedScene.unity" ,
22
73
"Assets/Scenes/ZkEvmGetBalance.unity" ,
23
74
"Assets/Scenes/ZkEvmGetTransactionReceipt.unity" ,
24
75
"Assets/Scenes/ZkEvmSendTransaction.unity" ,
25
76
"Assets/Scenes/ImxNftTransfer.unity"
26
- } ;
77
+ } ,
78
+ locationPathName = buildPath ,
79
+ target = BuildTarget . StandaloneWindows64 ,
80
+ options = buildOptions
81
+ } ;
82
+ }
27
83
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 ( ) ;
31
88
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
+ }
39
92
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." ) ;
42
96
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 > ( ) ;
51
101
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." ) ;
52
112
}
53
- catch ( Exception exception )
113
+ else
54
114
{
55
- Debug . LogException ( exception ) ;
115
+ Debug . LogWarning ( "AltTesterPrefab was not found in the [" + scene + "] scene." ) ;
56
116
}
57
117
}
118
+
58
119
}
59
120
60
- #endif
121
+ #endif
0 commit comments