Unity高级功能—法线贴图的制作以及在代码里面进行材质上贴图的切换

制作法线贴图还是得美术提供你几张基础的法线贴图之后,然后再去制作。

现在我们手里有两张贴图,一张是正常贴图,一张是法线贴图;

1、选择美术提供的基础的法线贴图:

Tip:其中Filtering选项有的地方说是应该选择Sharp,但是我的默认就是Sharp。

Unity高级功能—法线贴图的制作以及在代码里面进行材质上贴图的切换_第1张图片

2、选项设置完成之后,点击右下角的“Apply”就会看见贴图变成这样:

Unity高级功能—法线贴图的制作以及在代码里面进行材质上贴图的切换_第2张图片

此时我们的法线法线贴图就做好了。

 

代码里面怎么改变我们的法线贴图呢?其实实质就是获取材质然后更改材质上面的贴图。

我在场景里面放置了一个模型,这个模型可以放置两个材质:

Unity高级功能—法线贴图的制作以及在代码里面进行材质上贴图的切换_第3张图片

此时Material就是一个Size为2的数组,我们可以在C#的时候给Material赋值一个Size为2的数组。

using System.Collections;  
using System.Collections.Generic;  
using UnityEngine;  
  
public class ChangeMaterial : MonoBehaviour  
{  
  // 定义两个公共的变量,这样就可以在Unity里面将制作好的两个材质拖过来赋值
    public Material diffusemap;  
    public Material normalmap;  
  
private bool isnormal = false;  
// 用来获取模型的meshrenderer组件
    private MeshRenderer meshrender;  
    // Start is called before the first frame update  
    void Start()  
{  
  // 获取模型的meshrenderer组件
        this.meshrender = this.GetComponent();  
   // 将拖过来的两个材质,组成数组,赋值给meshrenderer组件
        meshrender.materials = new Material[2] { this.diffusemap, this.diffusemap };  
    }  
  
    // Update is called once per frame  
    void Update()  
{  
  // 使用鼠标左键来改变当前材质
        if(Input.GetMouseButtonDown(0))  
        {  
            if (isnormal) {  
                meshrender.materials = new Material[2] { this.diffusemap, this.diffusemap };  
            }  
            else {  
                meshrender.materials = new Material[2] { this.normalmap, this.normalmap };  
            }  
  
            isnormal = !isnormal;  
        }  
    }  
}  

你可能感兴趣的:(Unity)