预处理指令
编译器
编译器是一种翻译程序,它用于将源语言程序翻译为目标语言程序- 源语言程序:某种程序设计语言写成的,比如C#、C、C++、Java等语言写的程序
- 目标语言程序:二进制数表示的伪机器代码写的程序
预处理器指令
指导编译器,在实际编译开始之前对信息进行预处理可以让代码还没有编译之前就进行一些预处理判断
- 都是以#开始
- 不是语句,所以它们不以分号 ; 结束
- 在Unity中会用来进行一些平台或者版本的判断
折叠代码块就是预处理器指令
常见的预处理指令
#define#undef
- 定义一个符号,类似一个没有值的变量
- 取消define定义的符号,让其失效
两者都是写在脚本文件最前面
一般配合if指令使用或配合特性
//定义一个符号
#define Unity4
#define Unity5
#define Unity2017
#define Unity2019
//取消定义一个符号
#undef Unity4#define IOS
#define Android
#define PC
#if#elif#else#endif
和if语句规则一样,一般配合#define定义的符号使用
用于告诉编译器进行编译代码的流程控制
- if和endif一定要配对出现
//如果发现有Unity4这个符号,那么其中包含的代码就会被编译器翻译
//可以通过 逻辑或 和 逻辑与 进行多种符号的组合判断
#if Unity4Console.WriteLine("版本为Unity4");
#elif Unity2017 && IOSConsole.WriteLine("版本为Unity2017");
#elseConsole.WriteLine("其他版本");
#endif
#warning#error
告诉编译器,是报警告还是报错误,一般还是配合if使用
#if Unity4Console.WriteLine("版本为Unity4");
#elif Unity2017 && IOSConsole.WriteLine("版本为Unity2017");#warning 这个版本 不合法#error 这个版本不准执行
#elseConsole.WriteLine("其他版本");
#endif
如果报错会在编译之前就报错,会有红色波浪线,也无法执行
