码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • unity 改变模型及其子物体的Shader和透明度


    目录

    前言:

    记录一下方便使用修改

    一、改变透明度(包括所以子物体)

    二、还原

    总结:


    前言:

    记录一下方便使用修改

    unity 代码替换材质贴图_unity代码替换材质-CSDN博客

    一、改变透明度(包括所以子物体)

    使用GetComponentsInChildren()遍历其 子物体的Renderer

    1. /// <summary>
    2. /// 改变透明度
    3. /// </summary>
    4. /// <param name="data"></param>
    5. public virtual void OnYangFangZhiWu(GameObject Obj, BaseEventData data = null)
    6. {
    7. Debug.Log("name=" + Obj.name);
    8. Renderer[] renderers = ZhiWu_Parent.transform.Find(Obj.name).GetComponentsInChildren<Renderer>();
    9. foreach (Renderer renderer in renderers)
    10. {
    11. Material[] materials = renderer.materials;
    12. foreach (Material material in materials)
    13. {
    14. // 处理每个材质球
    15. Debug.Log(material.name);
    16. if (Obj.name == "牛鞭草")
    17. {
    18. renderer.material = material_TouMing;
    19. }
    20. else
    21. {
    22. // 获取新的Shader资源
    23. Shader newShader = Shader.Find("Standard");
    24. // 将新的Shader赋值给材质的shader属性
    25. material.shader = newShader;
    26. MaterialModify.SetMaterialRenderingMode(material, MaterialModify.RenderingMode.Fade);
    27. material.color = new Color(material.color.r, material.color.g, material.color.b, 0.2f);
    28. }
    29. }
    30. }
    31. }

    二、还原

    同样的方法逻辑去还原即可 

    1. ///还原
    2. public void SetTree8_00()
    3. {
    4. for (int i = 0; i < ZhiWu_Parent.transform.childCount; i++)
    5. {
    6. int x = i;
    7. Renderer[] renderers = ZhiWu_Parent.transform.GetChild(x).GetComponentsInChildren<Renderer>();
    8. foreach (Renderer renderer in renderers)
    9. {
    10. Material[] materials = renderer.materials;
    11. foreach (Material material in materials)
    12. {
    13. // 处理每个材质球
    14. Debug.Log(material.name);
    15. if (ZhiWu_Parent.transform.GetChild(x).gameObject.name == "牛鞭草")
    16. {
    17. renderer.material = material_YuanBen;
    18. }
    19. else
    20. {
    21. // 获取新的Shader资源
    22. //Shader newShader = Shader.Find("Nature/SpeedTree8");
    23. // 将新的Shader赋值给材质的shader属性
    24. material.shader = Shader.Find("Nature/SpeedTree8");
    25. material.color = new Color(material.color.r, material.color.g, material.color.b, 1f);
    26. // 将修改后的材质赋值给模型的渲染器组件
    27. // renderer.material = material;
    28. }
    29. }
    30. }
    31. }
    32. }

    三、这是更换材质球(包括所以子物体):

    1. public Material material_;
    2. public List<Material> materials_List = new List<Material>();
    3. /// <summary>
    4. /// 改变材质球
    5. /// </summary>
    6. /// <param name="data"></param>
    7. public virtual void SetMaterials()
    8. {
    9. Renderer[] renderers = this.transform.GetComponentsInChildren<Renderer>();
    10. foreach (Renderer renderer in renderers)
    11. {
    12. Material[] materials = renderer.materials;
    13. for (int i = 0; i < materials.Length; i++)
    14. {
    15. materials_List.Add(materials[i]);
    16. renderer.material = material_;
    17. }
    18. }
    19. }
    20. ///还原
    21. public void RestoreMaterials()
    22. {
    23. Renderer[] renderers = this.transform.GetComponentsInChildren<Renderer>();
    24. foreach (Renderer renderer in renderers)
    25. {
    26. Material[] materials = renderer.materials;
    27. for (int i = 0; i < materials.Length; i++)
    28. {
    29. renderer.material = materials_List[i];
    30. }
    31. }
    32. }

    总结:

    好记性不如烂笔头

  • 相关阅读:
    Spring Kafka消费模式(single, batch)及确认模式(自动、手动)示例
    Java基础知识全览
    【VR】【Unity】白马VR课堂系列-VR开发核心基础03-项目准备-VR项目设置
    CSS复习之选择器
    思科C9300交换机Bundle模式转换为Install模式
    计算机毕业设计Java居民个人健康信息与个人健康服务综合平台(源码+mysql数据库+系统+lw文档)
    【Vue】Vuex详解,一文读懂并使用Vuex
    flutter开发实战-inappwebview实现flutter与Javascript方法调用
    LeetCode_1049_最后一块石头的重量Ⅱ
    scanf、printf使用详解
  • 原文地址:https://blog.csdn.net/qq_37524903/article/details/133854759
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号