【Editor】动态添加/移除宏定义
ProjectSetting中OtherSettings页签
执行工具指令
using UnityEditor;
using UnityEngine;
using System.Linq;
public class Tools : Editor
{
//在菜单栏中点击自动添加
[MenuItem("Tools/AddScriptingSymbols")]
private static void AddScriptingSymbols()
{
//获取当前是哪个平台
BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;
Debug.LogError("buildTargetGroup: " + buildTargetGroup);
//获取当前平台已经存在的宏定义
var symbolList = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup);
Debug.LogError("Already exist symbolList: " + symbolList);
//添加指定的宏定义
var temp = symbolList.Split(';').ToList();
if (temp.Contains("ENABLE_GMT"))
{
//已经存在,不再追加
return;
}
temp.Add("ENABLE_GMT");
symbolList = string.Join(";", temp);
//保存
PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, symbolList);
Debug.LogError("添加后的宏: " + PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup));
}
[MenuItem("Tools/RemoveScriptingSymbols")]
private static void RemoveScriptingSymbols()
{
//获取当前是哪个平台
BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;
//获取当前平台已经存在的宏定义
string symbolList = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup);
var temp = symbolList.Split(';').ToList();
//移除指定的宏定义
if (!temp.Contains("ENABLE_GMT"))
{
return;
}
temp.Remove("ENABLE_GMT");
symbolList = string.Join(";", temp);
//保存
PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, symbolList);
Debug.LogError("移除后的宏: " + PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup));
}
}