首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过代码更改材料属性没有显示

通过代码更改材料属性没有显示
EN

Stack Overflow用户
提问于 2021-12-28 07:53:57
回答 2查看 1.6K关注 0票数 0

我使用Unity2020.3.3f1 (HDRP),我有一个预制件(立方体),上面有一个发射材料。按下鼠标按钮后,我想让它的发射强度增加10。

我遇到的问题:检查员向我展示了强度实际上在变化,但游戏并不代表这些变化(这意味着它不会变得“更亮”,尽管物质属性说它会变亮)。

现在,当我通过检查器手动增加金额时,仅仅是0.1平,突然之间,这些变化就可以看到了。

我想我现在什么都试过了.

简单地说,代码是什么样子的:

代码语言:javascript
复制
public Material cubeMaterial;
private float intensity = 10;

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

回答 2

Stack Overflow用户

发布于 2021-12-28 08:52:51

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

如果你不这样做,一个新的材料将被创建在场景的背后,并可能导致记忆问题。

为此,获取对游戏对象的呈现器的引用,获取其属性块,修改它并重新分配已修改的属性块。

您可以了解有关此文档的更多信息。

希望有所帮助;)

票数 0
EN

Stack Overflow用户

发布于 2021-12-28 12:56:36

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

cubeMaterial.GetColor("_EmissiveColor");

返回颜色值。

您也可以以类似的方式修改它:

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70504175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档