我们可以在Scripting Define Symbols
中定义要使用的宏命令,如下图所示,最简单直接的办法是此处直接输入或者删除宏命令来控制代码开关,但更好的方式是通过扩展编辑器实现自动删除或者添加宏命令。
核心代码如下
/// <summary>
/// 添加或者删除宏命令
/// </summary>
/// <param name="define">宏命令</param>
/// <param name="enable">添加或删除</param>
public static void SetDefineSymbols(string define, bool enable)
{
string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone);//获取目标平台下的宏命令
if (enable)
{
if (!currentDefines.Contains(define))
{
currentDefines += ";" + define;
}
}
else
{
currentDefines = currentDefines.Replace(define, "");
}
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone, currentDefines);
}
下面对编辑器进行扩展
[MenuItem("DevelopmentHandler/Test")]
public static void TestOn()
{
#if TEST_ON
SetDefineSymbols("TEST_ON", false);//删除TEST_ON宏命令
Menu.SetChecked("DevelopmentHandler/Test", false);//取消勾选状态
#else
SetDefineSymbols("TEST_ON", true);//添加TEST_ON宏命令
Menu.SetChecked("DevelopmentHandler/Test", true);//设置勾选状态
#endif
}
最终效果