SuperAPI AI 工具集

udw-setup-and-state

通用与其它

查看项目

更新于 11-06 16:17

技能介绍

UDW setup and state 是 Ultra Dynamic Weather(UDW)插件的基础配置与天气状态控制技能,覆盖从一个天气 Actor 加入关卡到运行时读取和响应天气变化的完整流程。

用途 本技能用于在虚幻引擎项目中初次添加 UDW,选择或应用天气预设,从游戏逻辑触发天气变化,在不新建预设的情况下覆盖单项天气数值,从蓝图读取当前天气状态或显示名称,把游戏事件绑定到天气过渡,以及追踪单个 Actor(如玩家 Pawn)的天气暴露程度。

前置条件与添加方式 UDW 依赖 UDS:关卡中需先存在 Ultra Dynamic Sky Actor(参见 uds-setup-and-modes)。随后从 Blueprints 文件夹拖入 Ultra Dynamic Weather Actor 到场景,它会自动检测 UDS 并完成挂接。默认情况下,UDW 以手动天气状态启动,与 UDS 上已有的 Cloud Coverage 和 Fog 保持一致。Basic Controls 中的 Weather 变量可立即应用不同天气预设。

基础控制

  • Weather:选择天气预设(Rain、Partly Cloudy、Blizzard、Thunderstorm 等);清空则回退到 Manual Weather State。
  • Wind Direction:以度为单位,驱动天气粒子移动和 UDS 上的云移动。
  • Advanced 下拉包含更多选项(Control Point Location Source 见 udw-spatial-weather;配置覆盖见 uds-modifiers-configs-state)。

天气状态 天气状态指定义“当前天气是什么”的一组数值,包括:Cloud Coverage、Fog、Wind Intensity、Rain、Snow、Dust、Thunder/Lightning(均为 float,分别驱动对应粒子与视觉效果),以及材质状态:Material Snow Coverage、Material Wetness、Material Dust Coverage(驱动材质效果函数)。运行时可见的材质状态不一定直接等于天气状态值,详见 udw-material-and-screen-effects 中的 Simulate Changing Material State Over Time 选项。

状态来源(从全局到本地) 天气状态可由以下来源组合决定:Basic Controls 中的天气预设(全局默认)、Change Weather(preset, duration) 函数(全局过渡)、Random Weather Variation(全局周期性,见 udw-random-seasons-temperature)、Manual Weather State(无预设时使用,支持逐值覆盖开关)、Weather Override Volumes(样条区域本地,见 udw-spatial-weather)、Radial Storms(本地圆形区域,见 udw-spatial-weather)。

天气预设 预设是数据资产,位于 Blueprints/Weather_Effects/Weather_Presets/(如 Rain、Partly_Cloudy、Blizzard、Thunderstorm 等),被 Weather、Change Weather、Random Weather Variation、Weather Override Volumes 和 Radial Storms 使用。创建自定义预设最简单的方法是复制自带资产后修改设置。若需为预设添加自定义蓝图逻辑,可创建 UDS_Weather_Settings 的子类,重写 Custom Weather Behavior 函数(父类会在预设上应用 Sky Modifier,若使用请调用 Super),再用该子类创建数据资产。该函数带 Alpha 输入(0–1),表示该预设当前对本地天气状态的影响程度。

运行时切换天气 调用 UDW.ChangeWeather(targetPreset, transitionLengthSeconds) 可即时或在指定时长内过渡到目标预设,新状态会一直保持,直到再次调用变化。例如 ChangeWeather(Blizzard, 10) 在 10 秒内过渡到暴风雪;ChangeWeather(null, 5) 在 5 秒内过渡到手动天气状态;ChangeToRandomWeatherVariation() 在手动覆盖后回到随机变化。

手动天气状态与逐值覆盖 在 Basic Controls 中清空 Weather 设置(不选预设)后,编辑 Manual Weather State 分类中的数值即可生效。也可在预设生效时对单项启用覆盖,例如雷暴预设生效时设置 Manual Rain Override = true 并指定 Manual Rain 值,则雨来自手动值,其余仍来自雷暴预设。每个天气状态值在该分类中都有覆盖开关和手动值。

运行时采样 可用 Get Cloud Coverage、Get Wind Intensity 等每个状态值对应的 Get 函数读取数值;Get Local Weather State 返回效果/天空当前使用的 Weather Settings 对象;Get Display Name for Current Weather 返回如 “Light Rain”“Blizzard” 的文本标签,适合在 UI 中直接展示天气名称。

天气事件分发器 可绑定 Started Raining / Finished Raining、Started Snowing / Finished Snowing、Dust/Sand Forming / Dust/Sand Clearing、Getting Cloudy / Clouds Clearing、Getting Foggy / Fog Clearing、Weather Display Name Changed(最通用的“天气变化”钩子)以及 State Change - <Value>(如 State Change - Rain)。开始/结束类分发器的阈值可在 UDW 的 Event Dispatchers 分类中调整。

Actor Weather Status 组件 用于重要 Actor(如玩家 Pawn)的逐 Actor 天气追踪:运行时周期性做射线检测以判断暴露程度,并追踪温度受影响情况,数值位于组件的 Status 分类。它提供组件级事件分发器(暴露于雨雪或温度越过冷热阈值时触发,区别于 UDW 全局分发器),以及 Material Effects 数组(加入动态材质实例后可按该 Actor 本地状态设置 Wet、Raining、Snowy、Dusty、Wind Intensity,均为 0–1;UDW 材质函数的 Use Local Parameters 输入与之配合)。无组件时可用 UDW.TestActorForWeatherExposure(actor) 一次性查询暴露程度,返回 rain、wind、snow、dust(各 0–1,1.0 表示在最大强度下完全暴露)。

Sequencer 在 Sequencer 中动画天气状态时使用 Manual Weather State 并为其变量打关键帧。若希望材质效果关键帧在运行时与序列中完全一致,在 Material Effects 分类中关闭 Simulate Changing Material State Over Time,否则运行时会逐渐过渡而非精确匹配关键帧。

多人复制 UDW 复制的是天气状态来源资产引用(过渡系统使用的预设资产、随机变化、Weather Override Volumes、Radial Storms),而非原始状态值。客户端自行构建 Local Weather State,因此每个玩家可体验各自的本地天气(如身处不同 WOV),而体积/风暴的底层状态是共享的。仅在状态来源变化开始时需要网络传输。

常见问题(Gotchas)

  • UDS 上的 Cloud Coverage / Fog 被忽略:UDW 在场时由其接管,应在 UDW 天气状态上设置。
  • Change Weather 看似没有过渡:transitionLengthSeconds 为 0 即瞬时切换,需传入时长才能平滑过渡。
  • 运行时设置 Weather 预设无效:预设赋值是编辑器时行为,运行时应用 ChangeWeather(preset, duration)。
  • Sequencer 中材质湿度/积雪与关键帧不一致:Simulate Changing Material State Over Time 处于开启状态,关闭后可精确回放关键帧。
  • Manual Rain 值被忽略:Manual Rain Override 未开启,逐值手动值需启用对应覆盖开关。
  • 天气显示名为 “Manual Weather”:未选择预设,UDW 回退到手动天气状态,设置 Weather 变量或调用 ChangeWeather(preset, ...)。
  • 材质中逐 Actor 湿度不生效:材质的 Use Local Parameters 未设置,或动态材质实例未加入 Actor Weather Status 组件的 Material Effects 数组。
  • Started Raining / Started Snowing 触发阈值不对:在 UDW 的 Event Dispatchers 分类中调整阈值。
  • Random Weather Variation 覆盖 ChangeWeather:调用 ChangeToRandomWeatherVariation() 交还控制权,或在该分类中禁用 Random Weather Variation。

限制 资料未提供该技能的收费、价格、支持平台与具体版本兼容范围;所引文档基于 Ultra Dynamic Weather 9.5,其余功能细节以官方文档为准。