using System.Collections.Generic; using UnityEditor; /// /// Utility class that manages Define Symbols for a given set of build targets. /// public class DefineSymbolsManager { private Dictionary defineSymbols = new Dictionary(); public DefineSymbolsManager(BuildTargetGroup[] groups) { foreach (var group in groups) { var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(group); defineSymbols.Add(group, new DefineSymbols(symbols)); } } public void UpdateFromBuildSettings() { var groups = defineSymbols.Keys; defineSymbols = new Dictionary(); foreach (var group in groups) { var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(group); defineSymbols.Add(group, new DefineSymbols(symbols)); } } public void ApplyToBuildSettings() { foreach (var e in defineSymbols) { PlayerSettings.SetScriptingDefineSymbolsForGroup(e.Key, e.Value.Get()); } } public void Add(string symbol) { foreach (var item in defineSymbols) { item.Value.Add(symbol); } } public void Remove(string symbol) { foreach (var item in defineSymbols) { item.Value.Remove(symbol); } } public bool Has(string symbol) { var has = true; foreach (var item in defineSymbols) { has = has && item.Value.Has(symbol); } return has; } public override string ToString() { var str = "DefineSymbolsManager {\n"; foreach (var item in defineSymbols) { str += item.Key + ": " + item.Value.Get() + "\n"; } str += "}"; return str; } }