提问
但是如果level中,只有UDS,没有放置DirectionalLight或者SKyLight,相比起有,会有什么区别呢,我看如果只有UDS,也会有光
回答
你问到的是 UDS 是否自带光源 、如果关卡里没有 DirectionalLight / SkyLight 会发生什么。这是使用 UDS 时最容易混淆的点,我给你讲得可以非常清楚。
🔥 关键结论一句话:
UDS 内部自带一盏 Directional Light(太阳)和一盏 Sky Light(环境光)。
所以即使你关卡里完全没有 DirectionalLight 和 SkyLight,UDS 依然会发光、产生阴影、产生天空环境光。
🌞 1. UDS 内部到底包含什么光?
Ultra Dynamic Sky Blueprint 其实包含了:
✔(1)一个 DirectionalLight Component(蓝图内部组件)
用于当成"太阳"。
✔(2)一个 SkyLight Component
自动捕捉天空生成反射。
✔(3)一个 Sky Dome Mesh(天空球)
有动态天空材质。
✔(4)时间系统(太阳位置计算)
会自动旋转 DirectionalLight 来生成日夜循环。
所以,这个蓝图自身就已经是一套 完整的天空 + 太阳 + 天光 系统。
🌞 2. 那为什么关卡里不放 DirectionalLight / SkyLight 也有光?
因为 UDS 自己内部带的那一套光是 蓝图内部组件。
你在 World Outliner 看不到这些内部组件,它们藏在蓝图内部,但 Play 时照样作用于场景。
⚠ 那为什么还要引用外部 DirectionalLight / SkyLight?
因为 UE 官方不希望你使用太多"内部组件光"(蓝图自带的光),原因如下:
🚨 3. Blueprint 内部的光源 vs 关卡独立光源:核心区别
这里直接分情况,让你立即看懂差别。
✔ 情况 A:使用 UDS 自带的光(你当前这种)
优点:
- 不用自己放 DirectionalLight / SkyLight
- UDS 自动处理一切
- 一般效果没问题,能正常照亮场景
缺点(非常重要):
-
光源不在 Outliner,上层难管理
- 你无法直接点选太阳去调参数(强度、阴影、光照质量)。
-
不方便调光照烘焙参数 / 阴影质量
- 比如设置 ray traced shadows、volumetric scattering intensity、light shaft bloom,都很麻烦。
-
PostProcess 和其他系统无法自动识别这些光的角色
一些后期系统(如 Auto Exposure)可能读取不到这些内部光源的元数据。
-
你没办法把这盏光作为共享光源给其他系统
例如:
- Ultra Dynamic Weather(天气系统)
- Water systems(如 Waterline Pro 雾散射)
- 体积云(Volumetric Clouds)
它们通常需要一个"指定太阳光",而内部光源不容易引用。
因此:
用内部光 → 虽然可用 → 但不符合 UE 的最佳实践。
✔ 情况 B:UDS 引用你关卡里的 DirectionalLight 和 SkyLight(推荐)
这是 UE 官方推荐、游戏项目中最常用的方式。
优点:
-
你在 Outliner 能看到并管理光源
可以随时调太阳的阴影、强度、颜色。
-
全项目统一使用同一盏太阳
任何系统都可以引用它(后期、体积云、海洋插件等)。
-
更容易与 UE5 新光照系统兼容
包括:
- Lumen
- Volumetric Clouds
- SkyAtmosphere
- Exponential Height Fog 的方向散射
等全部依赖明确的 DirectionalLight。
-
你可以关闭 UDS 内部光源,只保留蓝图功能
这是绝大多数专业 UE 项目的做法。
⭐ 那么应该怎么选?
如果你只是做简单演示:
✔ 只用 UDS 自带光 = 可以
(你现在这样没问题)
如果你是做专案、游戏、真实海况仿真(你现在做的是仿真实验室级别):
一定推荐:用自己的 DirectionalLight + SkyLight,然后引用给 UDS。
因为:
-
大部分真实海洋插件(Waterline Pro、Oceanology、Ultra Dynamic Weather)
都依赖:
一个明确的外部 DirectionalLight 作为"太阳"
🔍 你最关心的对比总结(非常直观)
| 项目 | 只有 UDS(内部光) | UDS + 外部灯光(推荐) |
|---|---|---|
| 太阳光是否存在 | ✔ 内置 | ✔ 由你提供 |
| 光源是否可在 Outliner 调节 | ❌ 不可 | ✔ 可 |
| 是否能调阴影质量 / 光照参数 | ❌ 不方便 | ✔ 方便 |
| SkyLight 环境光可控性 | ❌ 限制大 | ✔ 完整可控 |
| 是否能给其他系统引用太阳光 | ❌ 很难 | ✔ 完全可行 |
| 是否是专业项目做法 | ❌ 否 | ✔ 是 |
🧩 你现在应该怎么做?(快速指引)
你可以按照这些步骤优化你的场景:
📌 Step 1:在关卡放一盏 DirectionalLight(命名:SunLight)
📌 Step 2:放 SkyLight(命名:SkyLight)
📌 Step 3:选中 UDS → 在 Details 里找到:
- Sun Light Actor / Directional Light Actor → 绑定 SunLight
- Sky Light Actor → 绑定 SkyLight
📌 Step 4:禁用 UDS 内部光(如果有开关):
常见设置:
Use Built-In Sun Light → 关闭
Use Built-In Skylight → 关闭
这样 UDS 就完全接管外部光源。
🎯 如果你想,我可以帮你做到「最优配置」
你只要贴一个 UDS Details 面板(Lighting、Sun、Skylight 部分)截图给我,我可以:
- 明确告诉你你的版本有哪些内置光
- 哪些要关、哪些要保留
- 哪些要引用外部光
- 哪些参数与你的 Waterline Pro 海洋系统联动
这样你的仿真场景就可以做到:
真实天空 + 真实太阳方向 + 海浪真实散射 + 日夜动态切换 + 高质量反射 + 稳定后期曝光
追问

- 这是UDS的Details面板,引用就是在这里引用吗?
- 是的话,Moon Light Actor也可以引用DirectionalLight,需要吗?
- 我还对Fog进行了引用,如你所见。你认为合理吗
- 引用了以后,应该还需要禁用掉自带的吧?
回答
下面我逐条、非常明确地回答你的 4 个问题,并且告诉你 为什么这样做 ------你会一眼就看明白整个 UDS 的工作机制。
✅ 1. 这是 UDS 的引用位置吗?(是)
是的,你截图里的这块:
Custom Sun Light Actor
Custom Moon Light Actor
Custom Sky Light Actor
Custom Height Fog Actor
就是 UDS 官方提供的外部光源引用入口。
✔ 你把外部 DirectionalLight
✔ 外部 SkyLight
✔ 外部 ExponentialHeightFog
都绑定进去 ------ 完全正确。
这相当于告诉 UDS:
"不要用你内部自带的光了,用我场景里放的这些光。"
这是专业 UE 项目和仿真项目中标准做法。
✅ 2. Moon Light Actor 是否应该引用 DirectionalLight?
❌ 不应该。
✔ 永远不要把 "月亮" 也指到 DirectionalLight。
原因:
- 太阳 =一盏 DirectionalLight
- 月亮 = 另一盏单独的 DirectionalLight(光更弱、颜色更冷)
为什么不能共用一盏灯?
因为 UDS 的日夜系统中:
- 太阳在白天从地平线升起 → 亮度变强
- 月亮在晚上升起 → 月亮有独立的角度、亮度、颜色
UDS 会自动:
- 白天让太阳光有效 + 月亮光关闭
- 夜晚让月亮光有效 + 太阳光关闭
如果你把 太阳和月亮引用成同一盏 DirectionalLight:
- 夜晚太阳也会亮 = 假光
- 月亮无法独立调亮度
- 阴影错乱
- 整个日夜系统失效
⭐ 正确做法:你现在的设置就对了:
Custom Sun Light Actor → DirectionalLight
Custom Moon Light Actor → None (或者创建单独的 MoonLight)
如果你需要真实夜景(比如月光照亮海面、Waterline Pro 反射月亮)
→ 我可以教你创建一盏专用月光。
✅ 3. Height Fog Actor(雾)引用是否合理?
✔ 很合理,而且 强烈推荐 这样做。
引用后 UDS 会控制雾的:
- 雾的颜色(清晨偏蓝、夕阳偏橙、夜晚偏黑蓝)
- 雾的浓度
- 高度变化
- 随太阳高度调整亮度
效果比你手动调的 真实 100 倍。
尤其是你做仿真海面环境,这种随时间变化的雾非常重要。
所以你这样:
Custom Height Fog Actor → ExponentialHeightFog
完全正确。
✅ 4. 引用外部光源后,需要关闭内置光源吗?(是)
需要。
否则会出现:
- 场景中有 两盏 DirectionalLight(一个内部的,一个外部的)
- 场景多出一盏 Skylight(影响曝光)
- UDS 有两套光源在计算 → 阴影方向错误、曝光异常
⭐ 如何关闭 UDS 自带光源?
在 UDS Details 里搜索:
Use built-in
use internal
auto create light
auto sun
auto skylight
常见开关:
- Use Built-in Sun Light → OFF
- Use Built-in Skylight → OFF
- Use Built-in Moon Light → OFF
- Create New Skylight → OFF
- Use Default Fog → OFF
(名字依版本不同,但你搜索 "sun""sky""light""internal" 就能找到)
关闭后:
✔ 你的 DirectionalLight = 唯一太阳
✔ 你的 SkyLight = 唯一天光
✔ 你的 Fog = 唯一雾系统
✔ UDS 只负责"驱动"和"控制",不会额外生成光源
这是专业 UE5 项目标准做法。
📌 最佳配置总结(你当前状况的最优方案)
你现在的引用设置:
Sun Light Actor → DirectionalLight ✔
Moon Light Actor → None ✔(以后可创建)
Sky Light Actor → SkyLight ✔
Height Fog Actor → ExponentialFog ✔
接下来你需要做的只有一件事:
👉 在 UDS 里把所有 "Use internal light / built-in light / auto create skylight" 相关选项关闭。
这样就完成了专业级配置:
- 单一太阳
- 单一天空反射
- 单一雾系统
- UDS 负责驱动这些光源的角度、亮度、颜色
- 水面、天空、阴影全部一致、真实、稳定
如果你愿意,我可以更进一步帮你:
如果你贴一张:
✔ UDS 的 "Lighting" 和 "Sun/Moon" 设置截图
✔ 你的 DirectionalLight 的 Details 截图
✔ 你的 SkyLight 的截屏
我可以帮你做到:
- 最正确的太阳阴影设置
- 最真实的天空与海面互动
- Waterline Pro + UDS 的光照最佳配合
- 白天 / 夜晚 / 夕阳 / 清晨的真实过渡
- 自动曝光最佳设置(你之前问过曝光问题)
- 远处雾 + 天空雾 + 海面光线全部统一
一句话:
我能帮你把你的海面仿真场景打磨到"电影级别真实感"。
你愿意继续优化的话就给我再发几个截图即可。
提问
是在这里设置吗

回答
非常肯定地说:
✅ 对,就是在这里设置!就是这几个 "Use Custom Actor / Use Built-In Component" 开关。
你贴的截图正好显示了 UDS 最关键的光源选择开关 ,这就是用于 禁用 UDS 自带光源、并改成使用关卡中你自己的灯光的地方。
下面我逐项讲得清清楚楚,让你 100% 理解每个选项是干什么的。
🔥 ⭐ UDS 核心光源控制就在这里:
Component Selection
Sun Light → Use Custom Actor / Use Built-In Component
Moon Light → Use Custom Actor / Use Built-In Component
Sky Light → Use Custom Actor / Use Built-In Component
Height Fog → Use Custom Actor / Use Built-In Component
每一行代表一个系统:
| 项目 | 功能 |
|---|---|
| Sun Light | 太阳光(Directional Light) |
| Moon Light | 月亮光(第二盏 Directional Light) |
| Sky Light | 天空反射光 |
| Height Fog | 雾系统(Exponential Height Fog) |
🔧 你应该怎么设置?(正确专业的仿真项目配置)
按你现在的使用方式(你已经有外部 DirectionalLight、SkyLight、ExponentialFog),
应该设置成下面这样:
✅ Sun Light(太阳光) → Use Custom Actor
含义:
"用关卡里的 DirectionalLight,不用 UDS 内置的太阳光。"
这是正确做法。
❌ Moon Light(夜晚月光)→ 不要用 Sun Light,也不要 Built-in 除非你需要月光
如果你还没有月光:
📌 推荐设置:
Moon Light → Use Built-In Component
或者设成:
Moon Light → None(如果版本支持 None)
千万不要选 Use Custom Actor 然后绑定 DirectionalLight。
(太阳 = 一盏灯,月亮 = 另一盏灯)
✅ Sky Light(环境光) → Use Custom Actor
含义:
"用你场景里的 SkyLight,不用 UDS 自带 SkyLight。"
非常推荐。
这样你可以控制 SkyLight 的:
- 反射捕捉分辨率
- 是否实时捕捉
- 强度
- Lumen 环境贡献
✅ Height Fog(高度雾) → Use Custom Actor
含义:
"使用你场景里的 ExponentialHeightFog,让 UDS 控制它的颜色/浓度。"
你的做法完全合理,非常推荐。
🔥 最终结果总结(你应该达到的状态)
你的目标就是做到:
Sun Light → Use Custom Actor → 绑定你的 DirectionalLight
Moon Light → Use Built-In Component(如果你不需要月光)
Sky Light → Use Custom Actor → 绑定你的 SkyLight
Height Fog → Use Custom Actor → 绑定你的 ExponentialFog
这样:
- UDS 只负责驱动(太阳位置/雾颜色)
- 真实光源全部是你自己的
- 灯光在 Outliner 可见,可调
- 不会出现重复太阳、重复 Skylight、重复雾的问题
- 完全符合 UE5 标准做法
- Waterline Pro、雾、天空颜色、曝光都能统一一致
追问
总结一下添加UDS以后的其他细微操作
回答
添加 UDS 后:
✅ 必做:
- UDS 绑定外部 DirectionalLight/SkyLight/Fog
- 禁用 "Use Built-in Light Components"
- PostProcess Exposure 固定或合理设置
- 清理掉旧天空(SkySphere / SkyAtmosphere),如果原来有的话
- 保证只有 1 盏太阳、1 盏天空光、1 个雾
