1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #if UNITY_EDITOR
-
- using System;
- using System.Reflection;
- using System.Text;
- using UnityEditor;
- using UnityEngine;
-
- namespace XCharts.Runtime
- {
- public static class DefineSymbolsUtil
- {
- private static readonly StringBuilder s_StringBuilder = new StringBuilder();
-
- public static void AddGlobalDefine(string symbol)
- {
- var flag = false;
- var num = 0;
- foreach (var buildTargetGroup in (BuildTargetGroup[]) Enum.GetValues(typeof(BuildTargetGroup)))
- {
- if (IsValidBuildTargetGroup(buildTargetGroup))
- {
- var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup);
- symbols = symbols.Replace(" ", "");
- if (Array.IndexOf(symbols.Split(';'), symbol) != -1) continue;
- flag = true;
- num++;
- var defines = symbols + (symbols.Length > 0 ? ";" + symbol : symbol);
- PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, defines);
- }
- }
- if (flag)
- {
- Debug.LogFormat("Added global define symbol \"{0}\" to {1} BuildTargetGroups.", symbol, num);
- }
- }
-
- public static void RemoveGlobalDefine(string symbol)
- {
- var flag = false;
- var num = 0;
- foreach (var buildTargetGroup in (BuildTargetGroup[]) Enum.GetValues(typeof(BuildTargetGroup)))
- {
- if (IsValidBuildTargetGroup(buildTargetGroup))
- {
- var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup).Split(';');
- if (Array.IndexOf(symbols, symbol) == -1) continue;
- flag = true;
- num++;
- s_StringBuilder.Length = 0;
- foreach (var str in symbols)
- {
- if (!str.Equals(symbol))
- {
- if (s_StringBuilder.Length > 0) s_StringBuilder.Append(";");
- s_StringBuilder.Append(str);
- }
- }
- PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, s_StringBuilder.ToString());
- }
- }
- if (flag)
- {
- Debug.LogFormat("Removed global define symbol \"{0}\" to {1} BuildTargetGroups.", symbol, num);
- }
- }
-
- private static bool IsValidBuildTargetGroup(BuildTargetGroup group)
- {
- if (group == BuildTargetGroup.Unknown) return false;
- var type = Type.GetType("UnityEditor.Modules.ModuleManager, UnityEditor.dll");
- if (type == null) return true;
- var method1 = type.GetMethod("GetTargetStringFromBuildTargetGroup", BindingFlags.Static | BindingFlags.NonPublic);
- var method2 = typeof(PlayerSettings).GetMethod("GetPlatformName", BindingFlags.Static | BindingFlags.NonPublic);
- if (method1 == null || method2 == null) return true;
- var str1 = (string) method1.Invoke(null, new object[] { group });
- var str2 = (string) method2.Invoke(null, new object[] { group });
- if (string.IsNullOrEmpty(str1))
- {
- return !string.IsNullOrEmpty(str2);
- }
- else
- {
- return true;
- }
- }
- }
- }
- #endif
|