【问题标题】:Lights stop working on only some even when component is the same即使组件相同,灯也会停止工作
【发布时间】:2022-11-29 10:00:03
【问题描述】:

我正在尝试在 Unity 中为我的房子制作灯光。

我家里有 14 盏灯,但是,有一个小问题。这是因为房子的某些部分的灯光变暗了,而其他部分则没有。我已经检查过所有的灯组件是否相同(它们是),有时我会看到这种闪烁的东西?我想知道是不是因为有些事情没有做对,比如烤房子之类的。

这是光组件:

这是灯的样子(它们是红色的,因为我认为这样更容易看到):

如您所见,灯停止工作,如线条所示

如果有人可以帮助我,那就太好了!

编辑: 质量渲染:

【问题讨论】:

  • 也许有些颠倒正常?
  • 在旧版中检查项目设置/质量/渲染中的照明设置,或在 URP 中检查 RenderPipelineAsset/Lighting。也许您的像素光计数/每个对象限制很低。
  • @derHugo 我不认为这会是一个倒置的法线,我从 sketchfab 下载了房子,没有任何你可以看到的部分(窗户除外;))
  • @h4ri 图片添加到问题中
  • 取决于所使用的着色器,它仍然可能是这种情况;)因为它是一条如此尖锐的线,所以它必须对网格本身而不是灯光设置做一些事情......这是一个新的游戏对象吗?还是都属于同一个网格?

标签: unity3d light


【解决方案1】:

我在我的游戏中看到过类似的效果,我认为可能是由于场景中有很多灯,你必须将一些灯设置为重要,这样即使资源下降它们也不会闪烁,所以除了做这件事之外,其他事情可能只是烤灯是的,这样它们就不会闪烁,但当然这不是实时的,所以取决于你的需要

这里解释了如何设置灯光重要级别

https://docs.unity3d.com/Manual/class-Light.html

【讨论】:

  • 我的影子太硬了,
  • 所有的灯都可以打开和关闭,所以我认为烘烤灯不起作用。我将如何做方向灯?
  • 这就像烘烤我附有灯光的游戏对象并使用遮挡剔除?
  • 我可以先关闭所有灯,玩家必须自己打开它们,然后如果打开的灯太多,保险丝盒会“跳闸”,玩家必须重新打开它
  • 听起来不错,我应该将什么标记为正确?
【解决方案2】:

一次渲染太多灯光会影响灯光的显示方式。为了让它们看起来一样,我需要做一些可以关灯的东西。我通过创建一个“保险丝盒”来做到这一点,该保险丝盒具有允许打开的最大数量的灯组,如果打开的灯组数量高于最大值,它会将它们全部关闭。

关灯代码:

void ShutDown()
{
    if (!shutOff)
    {
        foreach (Light l in lights[index].lightGroups)
        {
            l.gameObject.SetActive(false);
        }
    }
}

希望这对其他人有帮助!

:)

【讨论】:

    猜你喜欢
    • 2019-12-30
    • 2018-10-17
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多