Unity中有专门开启和关闭自定义宏的位置:PlayerSettings-OtherSettings-Configuration-Scripting Define Symbols
是不行的。。。
但是,其实根本就没有开启和关闭,压根就是很随意
很多时候造成的情况是:
- 别人接手你的项目,根本玩不转
- 每次“开启”-“关闭“,都是让人痛苦的过程,而大部分情况都需要测试单个shader,可以说根本没法单侧了
- 扩展性很差,需要提前规划(这也是为什么后人玩不转,后人不可能完全理解你的规划,而且你能保证自己的规划100%就是对的吗??)
不要问哥为什么知道的
不想吐槽再多,反正一般不建议用
当然,如果你写的是hello-world游戏,当我没说
我说不要用,你非要用,就给你看下怎么用的吧
struct appdata_lightmap
{
float4 vertex : POSITION;
half2 texcoord : TEXCOORD0;
half2 texcoord1 : TEXCOORD1;
#if _FANCY_STUFF
half3 normal : NORMAL;
#if _NORMAL_MAP
half4 tangent : TANGENT;
#endif
#endif
};
明显这个老哥,就这个shader里面,也不止这一处用到了_NORMAL_MAP这个宏定义
所以,你需要建立一个.cginc文件
#define _NORMAL_MAP
然后,
#include "Lighting.cginc"
#include "AutoLight.cginc"
#include "ORGEInclude.cginc"
fixed4 _Color;
一个自动化构建,就很容易把这个配置,关掉了(建议打印要做好)
感受一下,没开挂之前
还是没开挂,只是换了下角度(和人一样 ,换一个角度看事情,才能感受到差异,至于能不能短时间感悟,看个人造化)
开挂后