该技能文档围绕虚幻引擎插件 Ultra Dynamic Weather(UDW)的搭建与天气状态控制展开。UDW 需先有 Ultra Dynamic Sky(UDS)作为前置,把 UDW Actor 拖入场景后会自动检测并连接 UDS。默认情况下 UDW 以手动天气状态启动,并匹配 UDS 上已有的云量与雾设置。
主要能力
- 基础控制:Weather 变量可选择天气预设(雨、局部多云、暴风雪、雷暴等),清空后回退到手动天气状态;Wind Direction 以角度驱动天气粒子与 UDS 云层移动。
- 天气状态:包含云量、雾、风强度、雨、雪、沙尘、雷/闪电等浮点值,以及驱动材质效果函数的材质状态(材质积雪覆盖、材质湿度、材质沙尘覆盖)。
- 状态来源:天气预设、Change Weather 过渡、随机天气变化、手动天气状态、天气覆盖体积、径向风暴,按全局到局部的层级组合。
- 预设:内置预设位于 Blueprints/Weather_Effects/Weather_Presets/,可复制后修改;也可创建 UDS_Weather_Settings 子类并重写 Custom Weather Behavior(含 0–1 的 Alpha 输入)。
- 运行时切换:UDW.ChangeWeather(targetPreset, transitionLengthSeconds),传 0 为瞬时,传时长则平滑过渡;ChangeWeather(null, 5) 回到手动状态;ChangeToRandomWeatherVariation() 交还随机变化控制。
- 手动状态与逐值覆盖:清空预设后编辑 Manual Weather State;每种天气值有覆盖开关与手动值,可只覆盖单项(如保留雷暴预设但单独设雨量)。
- 采样:Get Cloud Coverage、Get Wind Intensity 等逐值 Get 函数,Get Local Weather State,以及 Get Display Name for Current Weather 获取天气标签。
- 事件分发器:Started/Finished Raining、Snowing、Dust/Sand、Cloudy、Foggy,Weather Display Name Changed,State Change - <Value>;阈值在 Event Dispatchers 分类中设置。
- Actor Weather Status 组件:周期性检测 Actor 的天气暴露与温度影响,提供组件级事件分发器和 Material Effects 数组(配合材质的 Use Local Parameters);也可用 UDW.TestActorForWeatherExposure(actor) 做一次性查询。
- Sequencer:使用 Manual Weather State 打关键帧;如需与关键帧一致,关闭 Simulate Changing Material State Over Time。
- 多人:复制的是状态来源资产引用而非原始数值,客户端自行构建本地天气状态。
适用场景:首次为关卡添加 UDW、选择或应用天气预设、从蓝图触发天气切换、覆盖单项天气值、读取当前天气用于 UI、把游戏事件绑定到天气转变、追踪玩家等关键 Actor 的天气暴露。
常见限制与注意事项:UDW 在场景中时,UDS 上的云量与雾被忽略;ChangeWeather 未过渡通常是时长为 0;运行时预设赋值无效,需调用 ChangeWeather;材质湿度/积雪与 Sequencer 关键帧不一致需关闭模拟过渡;手动值不生效需开启对应覆盖开关;未选预设时显示名为 Manual Weather;随机天气变化可能覆盖 ChangeWeather,需调用 ChangeToRandomWeatherVariation() 或禁用该功能。