1
1
using System . Collections . Generic ;
2
2
using UnityEditor ;
3
- using UnityEditor . Build ;
4
3
using UnityEngine ;
4
+ using UnityEditor . Build ;
5
5
6
6
namespace FlutterUnityIntegration . Editor
7
7
{
8
- public static class SymbolDefineHelper
8
+ public static class SymbolDefineHelper
9
9
{
10
10
public static void SetScriptingDefine ( string symbol , bool enable )
11
11
{
12
12
bool changesMade = false ;
13
-
13
+
14
14
// Iterate over all named build targets available
15
+ #if UNITY_2021_2_OR_NEWER
15
16
foreach ( NamedBuildTarget namedTarget in GetAllNamedBuildTargets ( ) )
16
17
{
17
18
string defines = PlayerSettings . GetScriptingDefineSymbols ( namedTarget ) ;
18
19
var defineList = new List < string > ( defines . Split ( ';' ) ) ;
19
20
20
21
bool contains = defineList . Contains ( symbol ) ;
21
-
22
22
if ( enable && ! contains )
23
23
{
24
24
defineList . Add ( symbol ) ;
@@ -32,9 +32,31 @@ public static void SetScriptingDefine(string symbol, bool enable)
32
32
Debug . Log ( $ "Removed '{ symbol } ' from { namedTarget . TargetName } ") ;
33
33
}
34
34
35
- string updatedDefines = string . Join ( ";" , defineList ) ;
36
- PlayerSettings . SetScriptingDefineSymbols ( namedTarget , updatedDefines ) ;
35
+ PlayerSettings . SetScriptingDefineSymbols ( namedTarget , string . Join ( ";" , defineList ) ) ;
36
+ }
37
+ #else
38
+ foreach ( BuildTargetGroup group in GetAllBuildTargetGroups ( ) )
39
+ {
40
+ string defines = PlayerSettings . GetScriptingDefineSymbolsForGroup ( group ) ;
41
+ var defineList = new List < string > ( defines . Split ( ';' ) ) ;
42
+
43
+ bool contains = defineList . Contains ( symbol ) ;
44
+ if ( enable && ! contains )
45
+ {
46
+ defineList . Add ( symbol ) ;
47
+ changesMade = true ;
48
+ Debug . Log ( $ "Added '{ symbol } ' to { group } ") ;
49
+ }
50
+ else if ( ! enable && contains )
51
+ {
52
+ defineList . Remove ( symbol ) ;
53
+ changesMade = true ;
54
+ Debug . Log ( $ "Removed '{ symbol } ' from { group } ") ;
55
+ }
56
+
57
+ PlayerSettings . SetScriptingDefineSymbolsForGroup ( group , string . Join ( ";" , defineList ) ) ;
37
58
}
59
+ #endif
38
60
39
61
if ( changesMade )
40
62
{
@@ -47,12 +69,22 @@ public static void SetScriptingDefine(string symbol, bool enable)
47
69
}
48
70
}
49
71
72
+ #if UNITY_2021_2_OR_NEWER
50
73
private static IEnumerable < NamedBuildTarget > GetAllNamedBuildTargets ( )
51
74
{
52
75
yield return NamedBuildTarget . FromBuildTargetGroup ( BuildTargetGroup . Standalone ) ;
53
76
yield return NamedBuildTarget . FromBuildTargetGroup ( BuildTargetGroup . Android ) ;
54
77
yield return NamedBuildTarget . FromBuildTargetGroup ( BuildTargetGroup . iOS ) ;
55
78
yield return NamedBuildTarget . FromBuildTargetGroup ( BuildTargetGroup . WebGL ) ;
56
79
}
80
+ #else
81
+ private static IEnumerable < BuildTargetGroup > GetAllBuildTargetGroups ( )
82
+ {
83
+ yield return BuildTargetGroup . Standalone ;
84
+ yield return BuildTargetGroup . Android ;
85
+ yield return BuildTargetGroup . iOS ;
86
+ yield return BuildTargetGroup . WebGL ;
87
+ }
88
+ #endif
57
89
}
58
90
}
0 commit comments