11using System . Collections . Generic ;
22using UnityEditor ;
3- using UnityEditor . Build ;
43using UnityEngine ;
4+ using UnityEditor . Build ;
55
66namespace FlutterUnityIntegration . Editor
77{
8- public static class SymbolDefineHelper
8+ public static class SymbolDefineHelper
99 {
1010 public static void SetScriptingDefine ( string symbol , bool enable )
1111 {
1212 bool changesMade = false ;
13-
13+
1414 // Iterate over all named build targets available
15+ #if UNITY_2021_2_OR_NEWER
1516 foreach ( NamedBuildTarget namedTarget in GetAllNamedBuildTargets ( ) )
1617 {
1718 string defines = PlayerSettings . GetScriptingDefineSymbols ( namedTarget ) ;
1819 var defineList = new List < string > ( defines . Split ( ';' ) ) ;
1920
2021 bool contains = defineList . Contains ( symbol ) ;
21-
2222 if ( enable && ! contains )
2323 {
2424 defineList . Add ( symbol ) ;
@@ -32,9 +32,31 @@ public static void SetScriptingDefine(string symbol, bool enable)
3232 Debug . Log ( $ "Removed '{ symbol } ' from { namedTarget . TargetName } ") ;
3333 }
3434
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 ) ) ;
3758 }
59+ #endif
3860
3961 if ( changesMade )
4062 {
@@ -47,12 +69,22 @@ public static void SetScriptingDefine(string symbol, bool enable)
4769 }
4870 }
4971
72+ #if UNITY_2021_2_OR_NEWER
5073 private static IEnumerable < NamedBuildTarget > GetAllNamedBuildTargets ( )
5174 {
5275 yield return NamedBuildTarget . FromBuildTargetGroup ( BuildTargetGroup . Standalone ) ;
5376 yield return NamedBuildTarget . FromBuildTargetGroup ( BuildTargetGroup . Android ) ;
5477 yield return NamedBuildTarget . FromBuildTargetGroup ( BuildTargetGroup . iOS ) ;
5578 yield return NamedBuildTarget . FromBuildTargetGroup ( BuildTargetGroup . WebGL ) ;
5679 }
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
5789 }
5890}
0 commit comments