目录
unity 代码替换材质贴图_unity代码替换材质-CSDN博客
使用GetComponentsInChildren
- /// <summary>
- /// 改变透明度
- /// </summary>
- /// <param name="data"></param>
- public virtual void OnYangFangZhiWu(GameObject Obj, BaseEventData data = null)
- {
- Debug.Log("name=" + Obj.name);
-
- Renderer[] renderers = ZhiWu_Parent.transform.Find(Obj.name).GetComponentsInChildren<Renderer>();
-
- foreach (Renderer renderer in renderers)
- {
- Material[] materials = renderer.materials;
-
- foreach (Material material in materials)
- {
- // 处理每个材质球
- Debug.Log(material.name);
-
- if (Obj.name == "牛鞭草")
- {
- renderer.material = material_TouMing;
- }
- else
- {
- // 获取新的Shader资源
- Shader newShader = Shader.Find("Standard");
- // 将新的Shader赋值给材质的shader属性
- material.shader = newShader;
-
- MaterialModify.SetMaterialRenderingMode(material, MaterialModify.RenderingMode.Fade);
- material.color = new Color(material.color.r, material.color.g, material.color.b, 0.2f);
- }
-
- }
- }
-
-
- }
同样的方法逻辑去还原即可
- ///还原
- public void SetTree8_00()
- {
- for (int i = 0; i < ZhiWu_Parent.transform.childCount; i++)
- {
- int x = i;
- Renderer[] renderers = ZhiWu_Parent.transform.GetChild(x).GetComponentsInChildren<Renderer>();
-
- foreach (Renderer renderer in renderers)
- {
- Material[] materials = renderer.materials;
-
- foreach (Material material in materials)
- {
- // 处理每个材质球
- Debug.Log(material.name);
-
- if (ZhiWu_Parent.transform.GetChild(x).gameObject.name == "牛鞭草")
- {
- renderer.material = material_YuanBen;
- }
- else
- {
- // 获取新的Shader资源
- //Shader newShader = Shader.Find("Nature/SpeedTree8");
-
- // 将新的Shader赋值给材质的shader属性
- material.shader = Shader.Find("Nature/SpeedTree8");
- material.color = new Color(material.color.r, material.color.g, material.color.b, 1f);
- // 将修改后的材质赋值给模型的渲染器组件
- // renderer.material = material;
- }
-
-
- }
- }
- }
- }
- public Material material_;
- public List<Material> materials_List = new List<Material>();
- /// <summary>
- /// 改变材质球
- /// </summary>
- /// <param name="data"></param>
- public virtual void SetMaterials()
- {
- Renderer[] renderers = this.transform.GetComponentsInChildren<Renderer>();
-
- foreach (Renderer renderer in renderers)
- {
- Material[] materials = renderer.materials;
-
- for (int i = 0; i < materials.Length; i++)
- {
- materials_List.Add(materials[i]);
- renderer.material = material_;
- }
- }
-
-
- }
-
- ///还原
- public void RestoreMaterials()
- {
- Renderer[] renderers = this.transform.GetComponentsInChildren<Renderer>();
-
- foreach (Renderer renderer in renderers)
- {
- Material[] materials = renderer.materials;
-
- for (int i = 0; i < materials.Length; i++)
- {
- renderer.material = materials_List[i];
- }
- }
- }
好记性不如烂笔头