在Unity中完全黑暗的场景

5

我想创建一个完全黑暗的场景,只有闪电的光能照亮它。但是在第一步就已经失败了,即使我将场景中的所有灯光移除并将相机背景设置为黑色,我仍然无法使场景完全黑暗,我得到了这个:

enter image description here

这里是我的层级结构,您可以看到没有任何灯光:

enter image description here

我错过了什么?

我认为这可能是一个重复的问题,来源于:https://dev59.com/KKLia4cB1Zd3GeqPqOM1?rq=1 然而,唯一的答案没有被采纳,我也不确定它是否有效。 - Ignacio Alorre
4个回答

7
您可以尝试将环境光设置为黑色,这样它就会完全处于黑暗中。您可以使用以下代码以编程方式实现此操作: ambientLight.color.set(0x000000);
RenderSettings.ambientLight = Color.black;

另外,为了万无一失,您可以关闭场景中的任何灯光(以防万一)。

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

还要注意以下三点,可能会为场景增添一些光亮。

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

但是我认为在您的情况下,将环境光设置为黑色就足够了。您的场景似乎相当简单。


3
为了将场景完全照亮,您需要取消环境光设置。环境光是添加到每个物体上的光线,以使物体不会完全变黑 - 但有很多情况下你希望物体是这样的。

答案

可以通过转到窗口 > 照明 > 设置。来找到环境光设置。 确保环境光源设置为颜色``。在这里,您还可以使用RGB选择器调整颜色,从而更好地控制环境光的外观。

enter image description here

您可能想使用略高于黑色的颜色,以便即使在没有照明效果的情况下,事物仍然可以被轻微地看到。


值得一提的是,一些材料可能设置为发出或使用自己的光线设置 - 但这些通常可以通过修改材料进行调整。


另一个要注意的地方是,您可以使用编辑器中的照明开关(或相反 - 查看您正在做什么),预览照明。这将在场景视图中切换灯光效果(包括环境光设置)。

enter image description here


1
在大多数情况下,已经给出的答案是正确的。 但是也要注意光探针! ;) 尝试在物体的网格渲染器上禁用它。

1
在没有人工光源的情况下使夜晚变得漆黑对我来说需要几个步骤。首先,我想要一个升起和落下的太阳,所以我制作了一个脚本,简单地随时间改变了我的定向光(游戏对象“太阳”的x轴旋转)。
然后,我制作了一个脚本来调整我的太阳强度,强度从太阳升起时为0,在大约15度时迅速上升到1,而在大约165度时则从1回落到0。目前为止一切都很好......
Sun.intensity = intensity;
接下来,我让脚本将环境光和反射强度设置为相同。
RenderSettings.ambientIntensity = intensity; // 在照明选项卡中找到RenderSettings控件 RenderSettings.reflectionIntensity = intensity;
为了保险起见,我还确保设置了这些:
RenderSettings.ambientEquatorColor = Color.white; RenderSettings.ambientGroundColor = Color.white; RenderSettings.ambientSkyColor = Color.white;
我注意到,例如当它们是黑色的时候,即使强度为1.0,环境光也非常非常低。
最后,我不得不使用自定义着色器来混合白天和晚上的天空盒。这是因为如果你将Skybox作为环境光源(在你的Lighting选项卡中),那么环境光会受到你的天空盒颜色的影响。也就是说,你需要一个明亮的白天天空盒和一个黑暗的晚上天空盒。
现在,当太阳落山时,地形完全变黑,只有场景灯光(如火炬)照亮。我还使用了Ceto的水系统,所以我必须控制Ocean_TransparentQueue游戏对象的UnderWater脚本来调整吸收/散射强度,同上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接