#region
private Renderer[] rendArray;
private List<Material> materials = new List<Material>();
/// <summary>
/// 获取物体上所有的材质,并改变这些材质的Shader
/// </summary>
private void GetModelAllMaterialsAndChange(GameObject gameObject, Shader targetShader)
{
materials.Clear();
rendArray = gameObject.transform.GetComponentsInChildren<Renderer>(true);
for (int i = 0; i < rendArray.Length; i++)
{
Material[] mats = rendArray[i].materials;
for (int j = 0; j < mats.Length; j++)
{
materials.Add(mats[j]);
}
}
for (int i = 0; i < materials.Count; i++)
{
materials[i].shader = targetShader;
}
}
#endregion
Unity 获取物体所有的材质,并且改变这些材质的Shader
最新推荐文章于 2024-04-25 11:05:50 发布