Unity 批量修改物体为同一材质球
2019-07-02 本文已影响0人
Joe_Game
使用方法:
- 选中要替换的游戏物体
- 按住Ctrl连选要替换的材质球
- 点击Tools/changeMaterial按钮
using UnityEngine;
using UnityEditor;
public class ChangeMaterial : MonoBehaviour
{
[MenuItem("Tools/changeMaterial")]
public static void change()
{
Object[] m_objects = Selection.GetFiltered(typeof(Material), SelectionMode.DeepAssets);//从所有选择的对象中挑选出材质球
if (m_objects.Length != 1)//不能有多个材质球存在,我们只替换成一个材质球
{
Debug.Log("选择的材质不唯一");
return;
}
foreach (GameObject go in Selection.gameObjects)//遍历所有选择的对象,替换shader
{
FindMater(go, m_objects[0] as Material);
}
Debug.Log("Complete! ");
}
public static void FindMater(GameObject go, Material m)
{
if (go.GetComponent<MeshRenderer>() != null)//替换所选对象的材质球
{
go.GetComponent<MeshRenderer>().material = m;
}
foreach (Transform child in go.transform)//替换所选对象的子物体的材质球
{
FindMater(child.gameObject, m);
if (child.GetComponent<MeshRenderer>() != null)
{
child.GetComponent<MeshRenderer>().material = m;
}
}
}
}