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

栏目: 后端 · 发布时间: 5年前

内容简介:Unity 中的 Shader 有四种渲染模式,分别是:然后就是简单的代码操作,如下。由于 Color 的 Alpha 值是只读的不能修改,但是 Color 是可以修改的,所以要获取目标

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 3D 的 Shader 运行时状态及渲染模式问题

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

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

这样的话修改就只需要通过调用方法 Material.SetFloat(); 及其类似方法,括号里面是两个

参数一个是 String 类型的参数,表示通过 String 获取想要改变的参数,第二个是更改的值。

这期间我遇到一个问题,最后找了很久发现是编译器的问题,我在用第一种方法的时候,如果正常

情况下可以修改渲染模式,并且我用了三个 Color 来依次替换实现了渐变效果,但是如果我在

Hierarchy 面板中选中这个物体那么正在改变的物体就会突然变回更改之前的默认状态,或者如

果你预先选中了这个将要更改的物体他也会出现同样的效果,就是不能在编译状态下选中这个游

戏物体,不能在 Inspector 面板中查看他的渲染状态,最后我得出了一个运行时渲染的词语来

描述这个行为,

如果你在运行时更改了游戏物体 Shader 的渲染模式,那么查看他的渲染模式会导致他的渲染模

式属性重置。


以上所述就是小编给大家介绍的《Unity 3D 的 Shader 运行时状态及渲染模式问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

营销三大算法

营销三大算法

刘学林、刘逸春、张新春、王颖、余彬晶、刘锦炽、董少灵、沈逸超、王锐睿、孙静若 / 上海交通大学出版社 / 2018-1-31 / 88.00元

未来的营销应该是数字化的,即数字营销。以数据为本,用演算做根,数字营销能够演算生活的方方面面。在数字营销领域,市场的整个投入、产出带来什么东西?企业一定要狠清楚地知道,这是做数字营销的本质。数字营销和企业做生意的本质是一样的,目的都是以投入换取产出。 本书由正和岛数字营销部落编写,基于大量企业的案例与数据,提出了营销三大核心算法与一套全局营销系统,帮助企业CEO与营销人员科学化建立全局营销系......一起来看看 《营销三大算法》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具