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


本文摘自PHP中文网,作者little bottle,侵删。

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

1

2

3

4

――Opaque(不透明)

――Cutout(镂空)

――Fade(隐现)

――Transparent(透明)

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

相关教程:C#视频教程

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

1

2

3

4

5

6

7

8

9

10

11

12

13

//获取目标身上的渲染组件

 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 值。如下:

阅读剩余部分

相关阅读 >>

C#高级编程(三)-对象和类型详解

C#的socket实现udp协议通信的示例代码详解

C#中textbox输入框自动提示、自动完成、自动补全功能的具体详解(图文)

详解C#读写xml的示例代码

C#基于正则表达式抓取a标签链接和innerhtml的方法

C#实现char字符数组与字符串相互转换的方法详解

实现C#中图片.byte[]和base64string的转换方法的详解

详解C#把datatable中数据一次插入数据库的示例代码

C#将unicode编码转换为汉字字符串的代码分析

C#通过oledb操作excel实例代码

更多相关阅读请进入《C#》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...