Unity中的Shader渲染模式有幾種

這篇文章主要為大家展示了“Unity中的 Shader渲染模式有幾種”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Unity中的 Shader渲染模式有幾種”這篇文章吧。

創(chuàng)新互聯(lián)是一家專業(yè)提供海鹽企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為海鹽眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。

Unity 中的 Shader 有四種渲染模式,分別是:

——Opaque(不透明)
——Cutout(鏤空)
——Fade(隱現(xiàn))
——Transparent(透明)

之前我遇到一個需求,需要給特定的游戲物體添加一個冰凍的效果,但是給我的 Shader 
是一個完全冰凍的 Shader,而且無法通過參數(shù)調(diào)整它的顏色值。之后我的同事告訴我可
以通過修改渲染模式更改物體本身的Alpha值實現(xiàn),所以第一步我尋找了網(wǎng)上關(guān)于修改運
行時 Shader 渲染模式的代碼,如下。
http://www.voidcn.com/article...

然后就是簡單的代碼操作,如下。

       //獲取目標(biāo)身上的渲染組件
      var renderer = GetComponentsInChildren<Renderer>();
      // 建立一個冰凍數(shù)組 第二個數(shù)組元素是事先找好的冰凍特效
      Material[] frostMatetials = new Material[2] { renderer.material,
       frostEffect };
      //添加冰凍特效到人物身上的數(shù)組中
      renderer.materials = frostMatetials;
      //實例化一個渲染模式變量
      var fadeMode = SetMaterialRenderingMode.RenderingMode.Fade;
      //根據(jù)網(wǎng)上的方法更改你的 Shader 渲染模式為 Fade
         
     SetMaterialRenderingMode.SetMaterialRenderingModeMethod(
     renderer.materials[0],fadeMode);

由于 Color 的 Alpha 值是只讀的不能修改,但是 Color 是可以修改的,所以要獲取目標(biāo)
物體 Color 的 RGB 值,然后實例一個 Color 用構(gòu)造函數(shù)更改為你想要的 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
       };
       //替換目標(biāo) Color 屬性就可以實現(xiàn)了

其實這個方法不是很好,主要是因為所給的 Shader 不能修改屬性值,后來我拿到了可以更改
屬性值的Shader,事情就變得簡單了許多。

Unity中的 Shader渲染模式有幾種

這是我拿到的材料,可以通過材料找到材料中包含的 Shader,里面可以看到每個值所對應(yīng)的參數(shù)。

Unity中的 Shader渲染模式有幾種

這樣的話修改就只需要通過調(diào)用方法 Material.SetFloat(); 及其類似方法,括號里面是兩個
參數(shù)一個是 String 類型的參數(shù),表示通過 String 獲取想要改變的參數(shù),第二個是更改的值。

這期間我遇到一個問題,最后找了很久發(fā)現(xiàn)是編譯器的問題,我在用第一種方法的時候,如果正常
情況下可以修改渲染模式,并且我用了三個 Color 來依次替換實現(xiàn)了漸變效果,但是如果我在
Hierarchy 面板中選中這個物體那么正在改變的物體就會突然變回更改之前的默認(rèn)狀態(tài),或者如
果你預(yù)先選中了這個將要更改的物體他也會出現(xiàn)同樣的效果,就是不能在編譯狀態(tài)下選中這個游
戲物體,不能在 Inspector 面板中查看他的渲染狀態(tài),最后我得出了一個運行時渲染的詞語來
描述這個行為,
如果你在運行時更改了游戲物體 Shader 的渲染模式,那么查看他的渲染模式會導(dǎo)致他的渲染模
式屬性重置。

以上是“Unity中的 Shader渲染模式有幾種”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站名稱:Unity中的Shader渲染模式有幾種
網(wǎng)站地址:http://muchs.cn/article46/pdpghg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、移動網(wǎng)站建設(shè)、電子商務(wù)、Google、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營