0

我正在使用 Unity 2020.3.3f1 (HDRP) 我有一个预制件(立方体),上面有发光材料。按下鼠标按钮后,我希望它的发射强度增加 10。

我遇到的问题:Inspector 向我显示强度实际上正在发生变化,但游戏并不代表这些变化(这意味着它没有变得“更亮”,即使材质属性表明它确实如此)。

现在,当我通过 Inspector 手动增加数量时,甚至增加了 0.1,突然之间,这些变化现在是可见的。

我想我现在尝试了一切都没有运气......

简而言之,代码的外观:

public Material cubeMaterial;
private float intensity = 10;

if("mouseClick"){
intensity += 100;
cubeMaterial.setFloat("_EmissiveIntensity", intensity);
}
4

2 回答 2

0

如果您只打算修改这个游戏对象的材质,我建议您使用MaterialPropertyBlock修改材质的属性。

如果不这样做,则会在幕后创建新材质,并可能导致内存问题。

为此,请获取对游戏对象渲染器的引用,获取其属性块,修改它并重新分配修改后的属性块。

您可以在此文档中了解更多信息

希望有所帮助;)

于 2021-12-28T08:52:51.873 回答
0

我想您正在为您的材质使用默认的 HDRP/Lit 着色器。如果是这样,您可以通过“_EmissiveColor”着色器关键字访问您的立方体发射强度,如下所示:

cubeMaterial.GetColor("_EmissiveColor");

它返回一个颜色值。

你可以用类似的方式修改它:

cubeMaterial.SetColor("_EmissiveColor", startingEmission * 1.1f);

通常,在使用 HDRP 材质着色器时,查找着色器关键字总是安全的,您可以通过在检查器中导航到您的材质,单击 kogwheel 并选择编辑着色器,这将打开 .shader 文件。

于 2021-12-28T12:56:36.130 回答