我们知道在Unity中可以在代码中动态地改变Material监视面板中的参数,如改变数值大小或替换贴图。常用的API有:SetColor , SetFloat, SetInt, SetTexture.
然而今天在设置一个StandardShader的材质贴图的时候,发现设置了法线贴图但是场景中的物体并没有法线凹凸的效果,需要激活一下材质面板才行。经过反复检查以及查找资料,主要有以下两个问题:
// 贴图类型
string[] TEXTURE_TYPE = { "_MetallicGlossMap", "_BumpMap", "_ParallaxMap", "_OcclusionMap", "_DetailMask", "_DetailAlbedoMap", "_DetailNormalMap"};
// Material需要设置的关键字
string[] TEXTURE_KEYWORD = { "_METALLICGLOSSMAP", "_NORMALMAP", "_PARALLAXMAP", "", "_DETAIL_MULX2", "_DETAIL_MULX2", "_DETAIL_MULX2" };
法线贴图导入进来需要设置类型为NormalMap
// 设置法线贴图的类型 if (fileName == diffuseName + TEXTURE_TYPE[1]) { TextureImporter importer = (TextureImporter)AssetImporter<