unity平台的预处理(宏的定义)

在unity的跨平台中,我们常常会在各个平台游走,如安卓版,苹果版,PC版。在不同的平台上,我们要做不同的操作。然而我们可以使用unity的自带的宏定义来做平台的判断。Unity帮我们定义了例如以下平台预处理。(还有一些版本号的宏定义,这里没有写出来。)

我们使用#if #elif #endif进行宏命令的判断,unity会自己判断哪些条件成立,然后执行指定的代码。例子如下:

此外,我们还可以自己对宏命令进行定义:在edit-project settings-player中的设定栏可以添加属于自己的宏定义。如果你在该平台添加了该宏定义,那么就会判断执行该宏命令下的代码。而其他平台没有定义对应宏命令,就不会执行这些代码。

时间: 2024-10-22 06:57:18

unity平台的预处理(宏的定义)的相关文章

unity平台的预处理

unity平台的预处理 在开发中,特别是unity的跨平台中,我们经常会在各个平台游走,如安卓版,苹果版,PC版.......在此不同的平台上,有可能我们需要做不同的操作.然而我们就可以用unity的自带的平台宏定义方式来做平台的判断.Unity帮我们定义了如下平台预处理:  名称  描述 UNITY_EDITOR Define for calling Unity Editor scripts from your game code. UNITY_STANDALONE_OSX Platform

C 语言 之 预处理-------- 宏定义

1 概述 使用过以"#"号开头的预处理命令.如包含命令# include,宏定义命令# define等.在源程序中这些命令都放在函数之外, 而且一般都放在源文件的前面,它们称为预处理部分. 所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作.预处理是C语言的一个重要功能, 它由预处理程序负责完成.当对一个源文件进行编译时, 系统将自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译. C语言提供了多种预处理功能,如宏定义.文件包含. 条

unity3d shader 预定义着色器预处理宏

编译着色器程序时,Unity 会定义几个预处理宏. 目标平台 SHADER_API_OPENGL - 桌面 OpenGL SHADER_API_D3D9 - Direct3D 9 SHADER_API_XBOX360 - Xbox 360 SHADER_API_PS3 - PlayStation 3 SHADER_API_D3D11 - 桌面 Direct3D 11 SHADER_API_GLES - OpenGL ES 2.0(桌面或移动),使用 SHADER_API_MOBILE 的存在来确

Shader预处理宏、内置状态变量、多版本编译等

预定义shader预处理宏: Target platform: SHADER_API_OPENGL - desktop OpenGL SHADER_API_D3D9 - Direct3D 9 SHADER_API_XBOX360 - Xbox 360 SHADER_API_PS3 - PlayStation 3 SHADER_API_D3D11 - desktop Direct3D 11 SHADER_API_GLES - OpenGL ES 2.0 (desktop or mobile), u

VS中添加预处理宏的方法

VS中添加预处理宏的方法 除了在.c及.h中添加宏定义之外,还可以采用如下方法添加宏定义: 1.若只需要定义一个宏(如#define DEBUG),可以右键点击工程-->属性-->c/c++-->预处理器-->预处理器定义,点击下拉框中的编辑,输入想要定义的宏: 2.如果还需要定义宏的内容(如#define inline __inline),可以右键点击工程-->属性-->c/c++-->命令行,在其它选项中输入如下内容: /D"inline"

assert预处理宏与预处理变量

assert assert是一个预处理宏,由预处理器管理而非编译器管理,所以使用时都不用命名空间声明,如果你写成std::assert反而是错的.使用assert需要包含cassert或assert.h,用法如下: assert(expr) assert主要用途是:用于调试,检测一些不应该出现的情况.如果expr为假(即为0),assert输出信息并终止程序的运行,如果expr为真,则什么也做. assert的使用依赖于一个宏NDEBUG(No Debug),如果未定义NDEBUG则assert

C++中的预处理宏

C++中的预处理宏 一个预处理宏的例子: # define PRINT(STR,VAR) cout<<STR “ = “<<VAR<<endl; 跟在宏名后面的括号中的参数会被闭括号后面的所有代码替代.只要在调用宏的地方,预处理程序就删除名字PRINT并替换代码,所以使用宏名时编译器不会报告任何错误信息,它并不对参数做任何类型检查. 另一个例子: # define P(EX) cout<<#EX<< “:”<<EX<<en

【黑马程序员】————预处理指令1-宏定义

预处理指令简介 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 2.为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号 3.预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾.习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件 4.C语言提供的预处理指令主要有:宏

【ThinkingInC++】12、宏处理定义

/** * 功能:宏处理定义 * 时间:2014年8月12日20:02:07 * 作者:cutter_point */ #include<iostream> #include<stdlib.h> using namespace std; #define PRINT(STR, VAR) cout<<STR "=" <<VAR<<endl; //这里宏定义之后,所有PRINT("STR", VAR) //都会被