Unity 获取物体所有的材质,并且改变这些材质的Shader

    #region 

    private Renderer[] rendArray;
    private List<Material> materials = new List<Material>();

    /// 
    /// 获取物体上所有的材质,并改变这些材质的Shader
    /// 
    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,材质,c#)