【Unity】关于VS条件编译符号
写在前面
- 起因:我在回顾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会发现恢复默认值。官网有介绍加在哪里,即PlayerSettings面板Scripting Define Symbols栏,即下图橙框处,这里我加的是ZZZ。相关代码是PlayerSettings.SetScriptingDefineSymbolsForGroup和PlayerSettings.GetScriptingDefineSymbolsForGroup。
怎么用
- 加完即可在代码中使用条件编译符号。
【Unity】关于VS条件编译符号的更多相关文章
- c#定义全局条件编译符号
在"工程"上单机右键,"属性"--->"生成"--->"条件编译符号"后边的输入框中,输入自定义的条件编译变 ...
- 在 Roslyn 分析语法树时添加条件编译符号的支持
我们在代码中会写 #if DEBUG 或者 [Conditional("DEBUG")] 来使用已经定义好的条件编译符号.而定义条件编译符号可以在代码中使用 #define WAL ...
- .NET/C# 项目如何优雅地设置条件编译符号?
条件编译符号指的是 Conditional Compilation Symbols.你可以在 Visual Studio 的项目属性中设置,也可以直接在项目文件中写入 DefineConstants ...
- C# 中的#if、#elif、#else、#endif等条件编译符号 (转载)
这些是C#中的条件编译符号.这些指令我在项目中遇到过,查过网络,问过人(当然,既不认识大牛,也不认识小牛,所以没什么收获).今天翻看一本资料,有提到这个方面的东西,所以写下来和能看到这篇文章的人一起学 ...
- C# 中的#if、#elif、#else、#endif等条件编译符号
C#编译器遇到一个由#if和#endif包围起来的语句块时,会检查#if后面的符号是否已经被定义了,如果已经被定义,那么才会编译语句块之间的代码.而定义一个可以被#if测试的符号需要事先用#defin ...
- 把现有Unity3d游戏向Windows Phone 8.1移植(基础)
最近在将一款现有的游戏向Windows Phone平台移植,暂时完成了一个小阶段,做一个总结. 开发环境: Windows 8.1 系统及以上,愿意的话,用Windows 10 尝鲜也可以. 微软账号 ...
- 使用C#的Conditional特性与Unity编辑器宏命令做条件编译
概要 在传统的C#项目中,用Conditional特性做条件编译时,需要在Visual Studio中项目的属性里添加上条件编译符号,用法参考这篇文章. 而在Unity项目中,条件编译符号需要在Uni ...
- C# 条件编译
本文导读: C#的预处理器指令从来不会转化为可执行代码的命令,但是会影响编译过程的各个方面,常用的预处理器指令有#define.#undef.#if,#elif,#else和#endif等等,下面介绍 ...
- C#-#define条件编译
本文导读: C#的预处理器指令从来不会转化为可执行代码的命令,但是会影响编译过程的各个方面,常用的预处理器指令有#define.#undef.#if,#elif,#else和#endif等等,下面介绍 ...
- C# 条件编译备忘
第一步:配置管理器中新建解决方案配置 第二步:定义条件编译符号: 第三步:在代码中使用自定义的条件编译 #if CustomDebug Console.WriteLine("dsads&qu ...
随机推荐
- 查看Sql数据库连接数
select count(1) as nums, sd.name from [Master].[dbo].[SYSPROCESSES] spinner join [Master].[dbo].[SY ...
- 我和Java这些年的故事(五)
时光荏苒,我来到了IBM.和慕名已久的WebSphere Application Server(WAS)打起了交道. 之前我搞过Weblogic,对应用服务器的特性有了一定的了解.但WAS无疑更为庞大 ...
- Grafana + Prometheus + Mysqld_exporter 监控 Mysql
最近研究了对于Mysql的监控,感觉Prometheus还是挺强大的,有各种适配的度量导出工具,Mysqld_exporter也是旗下的一款工具,可以在Prometheus官网下载. 因为本机电脑用的 ...
- 手机端 replaceAll没有执行吗
let item = _styleArr[i].replace(' ','').split(':'): 不知道为什么,好像replaceAll没有执行,后来改成replace好了.
- 字体样式font-style
font-family 指的是字体比如 "宋体","微软雅黑"等等 具体字体:微软雅黑.宋体.黑体.宋体等等 字体系列:sans-serif.serf.mono ...
- linux发展史及软件配置
linux岗位需求 # 1.岗位需求 自动化运维,容器运维,DBA,IDC运维(不建议) ps:linux岗位会的越多给的越多 linux工作本质 linux简要发展史 # 1.发展 1991年,芬兰 ...
- vue axios传值到后端报错问题
原因:axios使用post方法传输数据给后端默认为json格式,会导致跨域问题 原理:qs是查询字符串解析和将对象序列化的库 qs.stringify() 将对象序列化成url的形式,以& ...
- VUE基础 · 绑定(1)
前端三大框架:Angular.js.React.js.Vue.js,目前最热的是Vue,并且使用的热度还在递增中. Vue已经将操作页面的方法封装好,我们只需要对数据进行修改就可以完成页面的显示.Vu ...
- 页面-vue-功能
一. 数组添加/修改数据 使用map this.list.map(i => { i.show = false return i }) 使用foreach this.list.forEach(i ...
- idea 常用的快捷键
1.ctrl+shitf+u 大小写切换 2.ctrl+shitf+L 快速格式化代码 3.ctrl+alt+方向左键 快速回到上一层 4..ctrl+shitf+E 最近更改的文件 5.ctrl ...