多种材质切换:获取物体的MeshRenderer组件上所有的材质球,并将其存放到数组中;创建另一个数组存放需要新材质球,通过循环遍历将将需要替换的材质球存放在创建好的数组内。 比如说同时给象棋的棋盘和棋子切换不同材质,具体步骤如下: 1.分别导入棋盘、棋子模型;黑方归一类,红方归一类,如图所示:
2.观察模型的材质,比如说,黑棋的第一个元素对应的是black材质球,第二个元素对应的是qizi材质球;红棋的第一个元素对应的是qizi材质球,第二个元素对应的是red材质球;棋盘的第一个元素对应的是棋盘线的black材质球,第二个元素对应的是qipan材质球。
3.创建ChangMat.cs脚本,具体代码如下: 我使用按钮点击进行切换,所以大家一定不要忘记添加using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ChangeMat : MonoBehaviour
{
public GameObject obj; // 获取物体
MeshRenderer meshRender; //获取组件
public Button Button; //获取需要点击的按钮
//需要替换的材质球
public Material outsideMat;
public Material insideMat;
Material[] matArray; //存放对象身上材质球数组
Material[] TsetArray; //存放需要替换的材质球数组
private void Awake()
{
meshRender = obj.GetComponent<MeshRenderer>();
matArray = meshRender.materials; //拿到对象身上的所有材质球
}
void Start()
{
TsetArray = new Material[matArray.Length];
for (int i = 0; i < matArray.Length; i++)
{
TsetArray[i] = outsideMat; //将需要替换的材质球存放在创建好的数组内
i++;
TsetArray[i] = insideMat;
}
Button.onClick.AddListener(OnStartButtonClick);//监听点击事件
}
public void OnStartButtonClick()
{
meshRender.materials = TsetArray;
}
}
4.创建三个切换按钮,根据需求创建多个空对象。每个模型创建对应的一个空对象并对其添加ChangMat.cs脚本,然后将三个模型的空对象作为一组
5.参照上一步骤,重复操作,但是要注意,将材质替换成所需材质
6.给三个按钮添加对应的点击事件
7.实现效果如图所示:
(若有侵权,私聊删除)