一般我们都是在playersetting->Player-> ScriptsCompilcation添加宏定义
但是现在实现在脚本中定义:
using System.Linq;
using UnityEditor;
using UnityEngine;
#if UNITY_EDITOR
public class ScriptingDefineSymbolsTest
{
//在菜单栏中点击自动添加
[MenuItem("Tool/AddScriptingSymbols")]
private static void AddScriptingSymbols()
{
//获取当前是哪个平台
BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;
Debug.Log("buildTargetGroup" + buildTargetGroup);
//获取当前平台已有的宏定义
var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup);
Debug.Log("symbols" + symbols);
//添加想要的宏定义
var ss = symbols.Split(';').ToList();
if (ss.Contains("UNITY_TEST"))
{
return;
}
ss.Add("UNITY_TEST");
symbols = string.Join(";", ss);
PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, symbols);
Debug.Log("添加后的宏:" + PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup));
}
[MenuItem("Tool/RemoveScriptingSymbols")]
private static void RemoveScriptingSymbols()
{
//获取当前是哪个平台
BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;
//获取当前平台已有的宏定义
string symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup);
var ss = symbols.Split(';').ToList();
//移除想要的宏定义
if (!ss.Contains("UNITY_TEST"))
{
return;
}
ss.Remove("UNITY_TEST");
symbols = string.Join(";", ss);
PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, symbols);
Debug.Log("移除后的宏:" + PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup));
}
}
#endif