【转载】[Unity] 关于 VS 条件编译符号

362 阅读2分钟

原文链接

【Unity】关于VS条件编译符号 | Caiger

正文

写在前面

  • 起因:我在回顾LuaFramework_UGUI(作者Jarjin Lee)代码时,看到了 C# 代码中的条件编译符号,比如下图的ASYNC_MODE。虽然字面上知道是什么意思,但我对 VS 的条件编译符号其实不太清楚,所以查了下资料,写下此博文作为记录。

VS 条件编译符号

在 VS 里

怎么加

  • 以 VS 工程 TestMisc 为例,打开项目属性面板,如下图(项目->TestMisc 属性)。

打开项目属性面板

  • 在项目属性面板的 “生成” 页下,选择条件编译符号所在 “配置”,添加或编辑要用的条件编译符号,修改完按 Ctrl+s 保存。如下图,我在名为 “Debug” 的配置下,新加了一个条件编译符号aaa。如果切换到其他 “配置”(比如切换到 “Release” 配置),是不能看到条件编译符号 aaa 的。

怎么用

  •  作为对比,我在配置管理器中新建了一个名为 “Local” 的配置,具体操作如下:

打开配置管理器

 

新建配置

新配置起名为 Local

  • 按前面的方法,我在 Local 配置下新加了一个名为 bbb 的条件编译符号。

  • 在主程序里,我加入以下测试代码,测试在 Local 配置下,和在 Debug 配置下的打印情况。
static void Main(string[] args)
{

#if aaa
    Console.WriteLine("this is aaa");
#endif

#if bbb
    Console.WriteLine("this is bbb");
#endif

    Console.ReadLine();

}

测试结果:在 Debug 配置下,只能看到 aaa 的打印;在 Local 配置下,只能看到 bbb 的打印。

Debug 配置下,只能看到 aaa 的打印

Local 配置下,只能看到 bbb 的打印

  •  显然,条件编译符号只能在指定配置下使用,它们的触发条件都是 true(就是都能用的意思)。

 在 Unity 里

怎么加

  • 在 Unity 里,如果按上面操作来加条件编译符号是 无效 的,再次打开 VS 会发现恢复默认值。官网有介绍加在哪里,即 Project Settings -> Player 设置面板中的 OtherSettings -> Configuration -> Scripting Define Symbols 栏,即下图橙框处,这里我加的是 ZZZ

相关代码是

 怎么用

  • 加完即可在代码中使用条件编译符号。