| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | #if UNITY_EDITORusing 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
 |