我正在使用 Unity 2020.3.3f1 (HDRP) 我有一個預制件(立方體),上面有發光材料。按下滑鼠按鈕后,我希望它的發射強度增加 10。
我遇到的問題:檢查員告訴我強度實際上在變化,但游戲并不代表這些變化(這意味著它沒有變得“更亮”,即使材料屬性說它確實如此)。
現在,當我通過 Inspector 手動增加數量時,甚至僅增加 0.1,突然之間的變化現在都可見了。
我想我現在嘗試了一切都沒有運氣......
簡而言之,代碼的樣子:
public Material cubeMaterial;
private float intensity = 10;
if("mouseClick"){
intensity = 100;
cubeMaterial.setFloat("_EmissiveIntensity", intensity);
}
uj5u.com熱心網友回復:
如果你只想修改這個游戲物件,我建議你使用MaterialPropertyBlock修改你的材質的一個屬性。
如果不這樣做,將在幕后創建新材質并可能導致記憶體問題。
為此,獲取對游戲物件渲染器的參考,獲取其屬性 blcok,對其進行修改并重新分配修改后的屬性塊。
您可以在此檔案中了解更多資訊
希望有所幫助;)
uj5u.com熱心網友回復:
我想您正在為您的材質使用默認的 HDRP/Lit 著色器。如果是這樣,您可以通過“_EmissiveColor”著色器關鍵字訪問您的立方體發射強度,如下所示:
cubeMaterial.GetColor("_EmissiveColor");
它回傳一個浮點值。
你可以用類似的方式修改它:
cubeMaterial.SetColor("_EmissiveColor", startingEmission 10);
通常,在使用 HDRP 材質著色器時,查找著色器關鍵字始終是安全的,您可以通過在檢查器中導航到您的材質,單擊齒輪并選擇編輯著色器來打開 .shader 檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/395712.html
下一篇:我如何在Unity中制作切換系統
