#define Unity5 #define Unity2019 #undef Unity2019//下面#if判断Unity2019会失效 using System; namespace Lesson19_预处理器指令 { internal class Program { static void Main(string[] args) { #region 知识点一 什么是编译器 //编译器是一种翻译程序 //他用将元语言程序翻译为目标语言程序 //源语言程序:某种程序设计语言写成的,比如C#、Java、C++等语言写的程序 //目标语言程序:二进制数表示的为机器代码写成的程序 #endregion #region 知识点二 什么是预处理器指令 //预处理器指令 知道编译器 在实际编译源代码之前 对信息进行预处理 //预处理器指令 都是以 # 开头的指令 //预处理器指令不是语句,所以他们不以;分号结束 //目前我们经常用到的 折叠代码块 就是预处理器指令 #endregion #region 知识点三 常见的预处理器指令 //1 //#define //定义一个符号,类似一个没有值的常量 //#undef //取消define定义的符号,让其失效 //两者都是写在脚本文件最前面 //一般配合if指令使用 或配合特性 //2 //#if //#elif //#else //#endif //和if语句规则一样,一般配合#define指令使用 //用于告诉编译器惊醒编译代码流程控制 //如果发现有Unity4这个符号那么其中包含的代码就会被编译器翻译 //可以通过逻辑或和逻辑与进行多种符号的组合判断 #if Unity4 && !Unity2019 Console.WriteLine("使用版本Unity4编译代码"); #elif Unity2019 //undef了Unity2019 所以这里的判断是false Console.WriteLine("使用版本Unity2019编译代码"); #elif Unity5 #warning 这个版本不合法 //发出警告信息 Console.WriteLine("使用版本Unity5编译代码"); #error 版本过旧请升级 //发出错误信息 #endif //3 //#warning //#error //告诉编译器 //是发出警告信息 还是错误信息 //编译器会在编译时显示这些信息 #endregion } } } //总结 //预处理器指令 //可以让代码还没有编译之前就可以进行一些预处理判断 //在Unity中国会用来惊醒一些平台或者版本的判断 //决定不同的版本或不同平台使用不同的代码逻辑