Unity 3D 浅谈Shader 运行时状态及渲染模式遇到的问题

发布时间:2022-05-16 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Unity 3D 浅谈Shader 运行时状态及渲染模式遇到的问题脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
Unity 中的 Shader 有四种渲染模式,分别是:

——Opaque(不透明)
——Cutout(镂空)
——Fade(隐现)
——Transparent(透明)

之前我遇到一个需求,需要给特定的游戏物体添加一个冰冻的效果,但是给我的 Shader
是一个完全冰冻的 Shader,而且无法通过参数调整它的颜色值。之后我的同事告诉我可
以通过修改渲染模式更改物体本身的Alpha值实现,所以第一步我寻找了网上关于修改运
行时 Shader 渲染模式的代码,如下。http://www.voIDCn.COM/article...

相关教程:C#视频教程

然后就是简单的代码操作,如下。

       //获取目标身上的渲染组件
       VAR renderer = GetcomponentsInChildren<Renderer>();
       // 建立一个冰冻数组 第二个数组元素是事先找好的冰冻特效
       MATErial[] frostMatetials = new Material[2] { renderer.material,
        frostEffect };
       //添加冰冻特效到人物身上的数组中
       renderer.materials = frostMatetials;
       //实例化一个渲染模式变量
       var fadeMode = SetMaterialRenderingMode.RenderingMode.Fade;
       //根据网上的方法更改你的 Shader 渲染模式为 Fade
           
      SetMaterialRenderingMode.SetMaterialRenderingModeMethod(
      renderer.materials[0],fadeMode);

由于 Color 的 Alpha 值是只读的不能修改,但是 Color 是可以修改的,所以要获取目标
物体 Color 的 RGB 值,然后实例一个 Color 用构造函数更改为你想要的 Alpha 值。如下:

       Color currentcolor03 = new Color
        {
            a = 0.8f,
            r = renderer.materials[0].color.r,
            g = renderer.materials[0].color.g,
            b = renderer.materials[0].color.b
        };
        //替换目标 Color 属性就可以实现了

其实这个方法不是很好,主要是因为所给的 Shader 不能修改属性值,后来我拿到了可以更改
属性值的Shader,事情就变得简单了许多。

111.png

这是我拿到的材料,可以通过材料找到材料中包含的 Shader,里面可以看到每个值所对应的参数。

222.png

这样的话修改就只需要通过调用方法 Material.SetFloat(); 及其类似方法,括号里面是两个
参数一个是 String 类型的参数,表示通过 String 获取想要改变的参数,第二个是更改的值。

这期间我遇到一个问题,最后找了很久发现是编译器的问题,我在用第一种方法的时候,如果正常
情况下可以修改渲染模式,并且我用了三个 Color 来依次替换实现了渐变效果,但是如果我在
HierArchy 面板中选中这个物体那么正在改变的物体就会突然变回更改之前的默认状态,或者
果你预先选中了这个将要更改的物体他也会出现同样的效果,就是不能在编译状态下选中这个游
戏物体,不能在 InsPEctor 面板中查看他的渲染状态,最后我得出了一个运行时渲染的词语来
描述这个行为,
如果你在运行时更改了游戏物体 Shader 的渲染模式,那么查看他的渲染模式会导致他的渲染模
式属性重置。

以上就是UnITy 3D 浅谈Shader 运行时状态及渲染模式遇到的问题的详细内容,更多请关注脚本宝典其它相关文章

脚本宝典总结

以上是脚本宝典为你收集整理的Unity 3D 浅谈Shader 运行时状态及渲染模式遇到的问题全部内容,希望文章能够帮你解决Unity 3D 浅谈Shader 运行时状态及渲染模式遇到的问题所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: