【问题标题】:Unity - Changing to an Emissive Material in script doesn't update the lighting of the scene?Unity - 在脚本中更改为自发光材质不会更新场景的照明?
【发布时间】:2022-07-30 17:25:35
【问题描述】:

我正在尝试制作一个基本的“灯条”类型的东西,一个开关可以打开和关闭它。我创建了两种材料(一种是自发光的,一种不是)。如果我在设计时设置它们,它们会按预期工作——发射的一个照亮房间,另一个不照亮。但是,当我尝试使用我的开关和灯光代码使材料可切换时,发射不起作用。材质变为发光、颜色鲜艳的材质,但房间内的灯光完全没有变化。

这是我用来更改材料的代码(有效,只是不包括新材料的发射,如果适用):

if(Ship.lights) {
     GetComponent<MeshRenderer>().material = on;
} else {
     GetComponent<MeshRenderer>().material = off;
}

这类似于 SO (Unity emission isn't updating when I change the material) 上的另一个问题,但这个人似乎正在将他现有的材料更改为发光材料,而我正在切换到发光材料。只是为了好玩,我尝试添加他建议的行(转载如下),但没有效果。

mat.EnableKeyword("_EMISSION");//This is a bug in unity

我假设我需要告诉 Unity 重新计算场景中的照明,或者在我更改材质以使对象发光时执行其他操作。想法?诚然,我对 3D 建模非常陌生,所以我很有可能正在尝试以错误的方式做某事。

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    您需要转到材质并将其设置为实时(可能您的材质处于烘焙模式)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 2018-05-20
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      相关资源
      最近更新 更多