Unity中的 Shader渲染模式有几种

这篇文章主要为大家展示了“Unity中的 Shader渲染模式有几种”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Unity中的 Shader渲染模式有几种”这篇文章吧。

Unity 中的 Shader 有四种渲染模式,分别是:

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

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

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

       //获取目标身上的渲染组件
      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,事情就变得简单了许多。

Unity中的 Shader渲染模式有几种

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

Unity中的 Shader渲染模式有几种

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

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

以上是“Unity中的 Shader渲染模式有几种”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程之家行业资讯频道!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍了Unity游戏开发中外观模式是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章主要介绍Unity中地面检测方案的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.普通射线在角色坐标(一般是脚底)...
这篇文章主要介绍了Unity游戏开发中如何消除不想要的黄色警告,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带...
这篇文章主要介绍了Unity中有多少种渲染队列,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解
这篇文章主要介绍Unity中如何实现Texture,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!了解Texture2D 如上图,Texture2D是一张
小编给大家分享一下Unity中DOTS要实现的特点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让...
这篇文章给大家分享的是有关unity中如何实现UGUI遮罩流光特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。下面是核心shader:Sh...
这篇文章主要为大家展示了“Unity中如何实现3D坐标转换UGUI坐标”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下...
这篇文章主要介绍了Unity游戏开发中设计模式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章主要介绍了Unity中如何实现仿真丝袜渲染,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了...
这篇文章给大家分享的是有关Unity插件OVRLipSync有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。项目需要接入对话口型动...
这篇文章主要介绍了Unity性能优化之DrawCall的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章给大家分享的是有关Unity给力插件之Final IK怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这插件有什么用:一般游...
这篇文章给大家分享的是有关Unity中如何内嵌网页插件UniWebView的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、常见Unity中内...
小编给大家分享一下Unity如何做流体物理的几个轮子,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让...
小编给大家分享一下Unity中Lod和Occlusion Culling的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收...
这篇文章将为大家详细讲解有关Unity中LineRenderer与TrailRenderer有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获...
这篇文章主要介绍了Unity中coroutine问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起...
这篇文章将为大家详细讲解有关unity中spine怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。骨骼动画首先我们来看到...
这篇文章主要为大家展示了“Unity Shader后处理中如何实现简单均值模糊”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学...