在Unity中运行时设置法线贴图

时间:2017-03-07 08:03:12

标签: c# unity3d material normals

我在通过脚本统一设置法线贴图时遇到问题。我有一个法线贴图,我想将它分配给目标对象的材质。

renderer.material = new Material(oldMaterial);    
renderer.material.SetTexture("_BumpMap", normalTexture);

此行适用于指定纹理。但是在我打开检查器并单击材料组件之前,目标对象的法线贴图不会更新。我可以使用这种技术更新反照率纹理,它可以工作 是否有强制材料更新其属性的功能? 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

尝试添加一个:

renderer.material.shaderKeywords = new string[1]{"_NORMALMAP"};

答案 1 :(得分:0)

根据Unity的文档,您首先需要EnableKeyword_NORMALMAP。然后,可以显示您提供的法线贴图。有关更多说明,请参见以下代码或this website

//Fetch the Renderer from the GameObject
renderer = GetComponent<Renderer> ();

//Make sure to enable the Keywords
renderer.material.EnableKeyword ("_NORMALMAP");

//Set the Normal map using the Texture
renderer.material.SetTexture("_BumpMap", normalTexture);