Unity中完全黑暗中的场景

时间:2017-09-30 06:33:18

标签: unity3d

我想创造一个完整的Darkeness场景,它将被风暴的闪电所照亮。但是我已经在第一步失败了,我无法完全在黑暗中完成场景,即使我删除场景中的所有灯光并将相机的背景设置为黑色,我仍然可以得到:

enter image description here

在我的层次结构中你可以看到没有灯光:

enter image description here

我错过了什么?

5 个答案:

答案 0 :(得分:2)

要完全从放置的灯光照亮场景,您需要放弃环境光设置。环境光是添加到每个物体的光,因此事物看起来不是完全黑的 - 但是在很多情况下你需要它们。

答案

可以通过Window > Lighting > Settings. Make sure that the环境照明source is set to颜色'找到环境光设置。在这里,您还可以使用RGB拾取器调整颜色,以更好地控制环境光的外观。

enter image description here

您可能想要使用略高于黑色的颜色,以便在没有灯光效果的情况下仍可以看到非常微弱的东西。

有一点需要注意,有些材料可能会设置为发出或使用自己的灯光设置 - 但这些材料通常可以通过修改材料进行调整。

另外请注意,您可以使用编辑器中的照明开关在编辑器中预览照明(或相反地 - 看看您在做什么)。这将为场景视图打开或关闭灯光效果(包括环境光设置)。

enter image description here

答案 1 :(得分:1)

您可以尝试将环境光线设置为黑色,因此它将全部在黑暗中。您可以使用以下代码以编程方式执行此操作:

RenderSettings.ambientLight = Color.black;

此外,关闭场景中可能有的任何光线(以防万一)

Light[] ligths = FindObjectsOfType(typeof(Light)) as Light[];
    foreach (Light ligth in ligths) {
        ligth.enabled = false;
}

还要注意以下三件事,这可能会为场景添加一些亮光。

  • 关闭或删除任何光照贴图。
  • 确保着色器不使用自发光或粒子着色器。
  • 确保在场景视图中打开“使用场景照明”。

但是我认为在你的情况下将环境光设置为黑色就足够了。你的场景看起来很简单。

答案 2 :(得分:1)

让夜晚在没有人造光的情况下变黑的过程涉及我几个步骤。我想要一个可以升起并落下的太阳,所以首先我编写了一个脚本,可以随时间改变我的定向光(游戏对象太阳)x旋转。

然后,我编写了一个脚本来调整太阳的强度,强度从太阳升起时的0开始,并在大约15度时快速上升到1,相反,在大约165度时,强度从1下降到0。很好....

Sun.intensity = intensity;

接下来,我使脚本将环境光和反射强度设置为相同。

RenderSettings.ambientIntensity = intensity; // RenderSettings controls found in Lighting tab RenderSettings.reflectionIntensity = intensity;

出于很好的考虑,我确保将其设置为: RenderSettings.ambientEquatorColor = Color.white; RenderSettings.ambientGroundColor = Color.white; RenderSettings.ambientSkyColor = Color.white;

我注意到,例如当它们为黑色时,即使强度为1.0,环境光也非常非常低。

最后,我必须使用自定义着色器在白天的天空盒和夜晚的天空盒之间进行混合。这是因为如果您将“天空盒”作为环境照明的源(在“照明”选项卡中),那么环境光将受到天空盒颜色的影响。也就是说,您想要一个明亮的白天天空盒和一个黑暗的夜间天空盒。

你去了。现在,当太阳下山时,地形完全变成黑色,只有像火炬一样的场景灯才照亮。我还使用了Ceto的水系统,因此我必须控制Ocean_TransparentQueue游戏对象的Underwater脚本来调整吸收/散射强度,与上面相同。

答案 3 :(得分:0)

在大多数情况下,已经给出的答案是正确的。 而且还要注意光探头! ;) 尝试在对象的Mesh Renderer上禁用它。

答案 4 :(得分:0)

我的情况,我已经完成了上面显示的所有操作,但是错过了反射探针。禁用它或降低强度。