您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“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,事情就變得簡單了許多。
這是我拿到的材料,可以通過材料找到材料中包含的 Shader,里面可以看到每個值所對應的參數。
這樣的話修改就只需要通過調用方法 Material.SetFloat(); 及其類似方法,括號里面是兩個
參數一個是 String 類型的參數,表示通過 String 獲取想要改變的參數,第二個是更改的值。
這期間我遇到一個問題,最后找了很久發現是編譯器的問題,我在用第一種方法的時候,如果正常
情況下可以修改渲染模式,并且我用了三個 Color 來依次替換實現了漸變效果,但是如果我在
Hierarchy 面板中選中這個物體那么正在改變的物體就會突然變回更改之前的默認狀態,或者如
果你預先選中了這個將要更改的物體他也會出現同樣的效果,就是不能在編譯狀態下選中這個游
戲物體,不能在 Inspector 面板中查看他的渲染狀態,最后我得出了一個運行時渲染的詞語來
描述這個行為,
如果你在運行時更改了游戲物體 Shader 的渲染模式,那么查看他的渲染模式會導致他的渲染模
式屬性重置。
以上是“Unity中的 Shader渲染模式有幾種”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。