123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 loyalsoft. All rights reserved.
- // Homepage: http://www.game7000.com/
- // Feedback: http://www.game7000.com/
- //------------------------------------------------------------
- using System.Collections.Generic;
- using UnityEditor;
- namespace UnityGameFramework.Editor
- {
- /// <summary>
- /// 脚本宏定义。
- /// </summary>
- public static class ScriptingDefineSymbols
- {
- private static readonly BuildTargetGroup[] BuildTargetGroups = new BuildTargetGroup[]
- {
- BuildTargetGroup.Standalone,
- BuildTargetGroup.iOS,
- BuildTargetGroup.Android,
- BuildTargetGroup.WSA,
- BuildTargetGroup.WebGL
- };
- /// <summary>
- /// 检查指定平台是否存在指定的脚本宏定义。
- /// </summary>
- /// <param name="buildTargetGroup">要检查脚本宏定义的平台。</param>
- /// <param name="scriptingDefineSymbol">要检查的脚本宏定义。</param>
- /// <returns>指定平台是否存在指定的脚本宏定义。</returns>
- public static bool HasScriptingDefineSymbol(BuildTargetGroup buildTargetGroup, string scriptingDefineSymbol)
- {
- if (string.IsNullOrEmpty(scriptingDefineSymbol))
- {
- return false;
- }
- string[] scriptingDefineSymbols = GetScriptingDefineSymbols(buildTargetGroup);
- foreach (string i in scriptingDefineSymbols)
- {
- if (i == scriptingDefineSymbol)
- {
- return true;
- }
- }
- return false;
- }
- /// <summary>
- /// 为指定平台增加指定的脚本宏定义。
- /// </summary>
- /// <param name="buildTargetGroup">要增加脚本宏定义的平台。</param>
- /// <param name="scriptingDefineSymbol">要增加的脚本宏定义。</param>
- public static void AddScriptingDefineSymbol(BuildTargetGroup buildTargetGroup, string scriptingDefineSymbol)
- {
- if (string.IsNullOrEmpty(scriptingDefineSymbol))
- {
- return;
- }
- if (HasScriptingDefineSymbol(buildTargetGroup, scriptingDefineSymbol))
- {
- return;
- }
- List<string> scriptingDefineSymbols = new List<string>(GetScriptingDefineSymbols(buildTargetGroup))
- {
- scriptingDefineSymbol
- };
- SetScriptingDefineSymbols(buildTargetGroup, scriptingDefineSymbols.ToArray());
- }
- /// <summary>
- /// 为指定平台移除指定的脚本宏定义。
- /// </summary>
- /// <param name="buildTargetGroup">要移除脚本宏定义的平台。</param>
- /// <param name="scriptingDefineSymbol">要移除的脚本宏定义。</param>
- public static void RemoveScriptingDefineSymbol(BuildTargetGroup buildTargetGroup, string scriptingDefineSymbol)
- {
- if (string.IsNullOrEmpty(scriptingDefineSymbol))
- {
- return;
- }
- if (!HasScriptingDefineSymbol(buildTargetGroup, scriptingDefineSymbol))
- {
- return;
- }
- List<string> scriptingDefineSymbols = new List<string>(GetScriptingDefineSymbols(buildTargetGroup));
- while (scriptingDefineSymbols.Contains(scriptingDefineSymbol))
- {
- scriptingDefineSymbols.Remove(scriptingDefineSymbol);
- }
- SetScriptingDefineSymbols(buildTargetGroup, scriptingDefineSymbols.ToArray());
- }
- /// <summary>
- /// 为所有平台增加指定的脚本宏定义。
- /// </summary>
- /// <param name="scriptingDefineSymbol">要增加的脚本宏定义。</param>
- public static void AddScriptingDefineSymbol(string scriptingDefineSymbol)
- {
- if (string.IsNullOrEmpty(scriptingDefineSymbol))
- {
- return;
- }
- foreach (BuildTargetGroup buildTargetGroup in BuildTargetGroups)
- {
- AddScriptingDefineSymbol(buildTargetGroup, scriptingDefineSymbol);
- }
- }
- /// <summary>
- /// 为所有平台移除指定的脚本宏定义。
- /// </summary>
- /// <param name="scriptingDefineSymbol">要移除的脚本宏定义。</param>
- public static void RemoveScriptingDefineSymbol(string scriptingDefineSymbol)
- {
- if (string.IsNullOrEmpty(scriptingDefineSymbol))
- {
- return;
- }
- foreach (BuildTargetGroup buildTargetGroup in BuildTargetGroups)
- {
- RemoveScriptingDefineSymbol(buildTargetGroup, scriptingDefineSymbol);
- }
- }
- /// <summary>
- /// 获取指定平台的脚本宏定义。
- /// </summary>
- /// <param name="buildTargetGroup">要获取脚本宏定义的平台。</param>
- /// <returns>平台的脚本宏定义。</returns>
- public static string[] GetScriptingDefineSymbols(BuildTargetGroup buildTargetGroup)
- {
- return PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup).Split(';');
- }
- /// <summary>
- /// 设置指定平台的脚本宏定义。
- /// </summary>
- /// <param name="buildTargetGroup">要设置脚本宏定义的平台。</param>
- /// <param name="scriptingDefineSymbols">要设置的脚本宏定义。</param>
- public static void SetScriptingDefineSymbols(BuildTargetGroup buildTargetGroup, string[] scriptingDefineSymbols)
- {
- PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, string.Join(";", scriptingDefineSymbols));
- }
- }
- }
|