Skip to content

Desuq Cafe

文档菜单

此翻译可能落后于最新的英文版本。 查看英文版

OBS Trigger Volume

AInhyeongOBSTriggerVolume 是一种无代码的方式,可在游戏运行时自动控制 OBS。将其放置在关卡中,设置形状,配置触发时机、要执行的动作以及所需满足的条件,全部在 Details panel 中完成,无需 Blueprint。

放置 Trigger Volume

将一个 OBS Trigger Volume Actor 拖入关卡(或生成 AInhyeongOBSTriggerVolume)。它会在编辑器视口中绘制自身,便于定位。设置形状和范围,然后在 Details panel 中填写动作和条件。

形状

属性类型说明
TriggerShapeEOBSTriggerShapeBoxSphere
BoxExtentFVector各方向上的半尺寸(该盒体在每个轴上跨度为 2×)。当形状为 Box 时显示。
SphereRadiusfloat当形状为 Sphere 时显示。

触发事件模式

TriggerEventEOBSTriggerEvent)控制体积的触发时机:

模式行为
OnEnter当 Actor 进入体积时触发(执行 OnEnterActions)。
OnExit当 Actor 退出体积时触发(执行 OnExitActions)。
Both进入和退出时均触发,分别使用两个独立的动作数组。

OnEnterActions 数组在 OnEnter/Both 时显示,OnExitActionsOnExit/Both 时显示。

动作

每个动作均为 FOBSTriggerAction。设置 ActionType 后,相关字段将自动显示。完整动作列表(EOBSTriggerActionType):

动作使用的参数描述
SwitchSceneSceneName切换到指定的 OBS 场景。
StartRecording开始录制。
StopRecording停止录制。
ToggleRecording切换录制状态。
PauseRecording暂停录制。
ResumeRecording恢复录制。
StartStreaming开始推流。
StopStreaming停止推流。
ToggleStreaming切换推流状态。
StartVirtualCam启动虚拟摄像头。
StopVirtualCam停止虚拟摄像头。
ToggleVirtualCam切换虚拟摄像头。
StartReplayBuffer启动 Replay Buffer。
StopReplayBuffer停止 Replay Buffer。
SaveReplayBuffer将 Replay Buffer 保存到文件。
SetInputMuteInputNamebMuted静音或取消静音一个音频输入。
SetInputVolumeInputNameVolumeDb以 dB 设置输入的音量(0 = 原始增益,负值 = 更小声,范围限制在 -100…26)。
ToggleInputMuteInputName切换输入的静音状态。
SetSceneItemEnabledSceneNameSourceNamebEnabled按名称显示或隐藏场景中的来源(场景项目)。
SetSourceFilterEnabledSourceNameFilterNamebEnabled启用或禁用来源上指定名称的滤镜。
TriggerHotkeyByNameHotkeyName通过已注册名称触发 OBS 热键(例如 OBSBasic.StartRecording)。
TriggerMediaInputActionInputNameMediaAction控制媒体源。

MediaActionEOBSMediaInputAction 类型:NonePlayPauseStopRestartNextPrevious

每个动作还有一个 DelaySeconds(单个动作的延迟时间,最小值限制为 0)。

在编辑器中,动作的目标字段在已连接时为实时 OBS 下拉菜单:场景、输入和来源选择器,以及每个来源的滤镜选择器和热键选择器(打开时按需获取)。所选名称保存在动作中,因此断开连接后仍可保留。

条件

所有条件以逻辑 AND 方式求值,即每个已启用的条件都必须通过,动作才会执行。OBS 连接始终是必要条件,并在内部进行检查。条件存放于 FOBSTriggerConditions

录制 / 推流要求(三态)

属性类型取值
RecordingRequirementEOBSOutputStateRequirementAny / Required(必须正在录制)/ Disallowed(必须未在录制)
StreamingRequirementEOBSOutputStateRequirementAny / Required / Disallowed

每个输出使用单一三态值,从结构上确保了”必须开启”与”必须关闭”不会同时被设置。

场景条件

属性类型说明
RequiredCurrentSceneFString仅当当前 OBS 场景与此名称匹配时触发(空值 = 任意场景)。
ExcludedCurrentSceneFString仅当当前 OBS 场景与此名称匹配时触发(空值 = 禁用)。

在编辑器中通过实时 OBS 场景下拉菜单进行选择。

音频阈值条件

AudioConditionsTArray<FOBSAudioThresholdCondition>。可添加任意数量,全部必须通过。

字段类型说明
InputNameFString要检测的 OBS 输入(例如 Mic/Aux)。空值 = 忽略该条件。
ModeEOBSAudioConditionModeTalking(说话)或 Idle(静默)。
ThresholdDbfloat自动注册检测器的峰值 dB 阈值(默认 -40,范围限制在 -100…0)。

这些条件使用与 麦克风 / 语音活动检测 中描述的相同的防抖麦克风活动检测机制。每个输入在 BeginPlay 时自动注册检测。

来源可见性条件

SourceVisibleConditionsTArray<FOBSSourceVisibleCondition>。全部必须通过。

字段类型说明
SceneNameFString包含来源的场景。空值 = 忽略该条件。
SourceNameFString要检测可见性的来源(场景项目)。空值 = 忽略该条件。
ModeEOBSVisibilityConditionModeVisible(可见)或 Hidden(隐藏)。

读取实时 bSceneItemEnabled 缓存。未在缓存中找到的来源(名称拼写错误、场景错误或列表尚未获取)将导致条件不通过。

Details panel 会将音频和可见性条件渲染为带名称选择器的形式(在已连接时从 OBS 填充),并附有实时状态指示点,便于在编辑体积时实时查看说话/可见状态的变化。

触发过滤器与选项

属性类型说明
ActorClassFilterTSubclassOf<AActor>仅该类(或其子类)的 Actor 可触发。默认 AActor 允许任意 Actor。设为 APawn 可限制为仅玩家等。
SpecificActorFilterTSoftObjectPtr<AActor>仅该指定 Actor 可触发。若已设置,则忽略 ActorClassFilter
CooldownSecondsfloat触发之间的冷却时间(防止在体积边缘频繁触发)。
bTriggerOncebool触发一次后禁用。
bTriggerEnabledbool当前触发器是否已启用。

运行时辅助函数:SetTriggerEnabled(bool)ResetTrigger()(重新启用单次触发)、ExecuteEnterActions()ExecuteExitActions()ExecuteActions(Actions)AreConditionsMet()HasValidOBSConnection()GetActiveOBSComponent()。事件 OnTriggerEnter / OnTriggerExit 在动作即将执行时触发。

外观与可视化

该体积会在编辑器视口中(以及可选在运行时)绘制自身,便于放置和查看。属性(分类 OBS Trigger | Appearance):

属性类型说明
bShowDebugInEditorbool在编辑器视口中绘制体积。
bShowAtRuntimebool在运行时也绘制(PIE / 打包的开发版本)。在 Shipping 版本中会被编译移除。
bDrawSolidbool在线框基础上增加半透明填充(仅限 Box,颜色的 alpha 值决定填充透明度)。
LineThicknessfloat线框粗细(0 = 最细),最大限制为 10。
DebugColorFColor绘制颜色(也用于带样式的网格体)。
bShowActionLabelbool在体积上方浮动显示单行动作摘要(例如 Enter: BRB)。遵循相同的显示标志。
bHideBillboardbool隐藏编辑器选择精灵(仅限编辑器)。
VolumeStyleEOBSTriggerVolumeStyle可选的材质渲染外观,同样在游戏中显示NoneGlow(菲涅耳发光)、Hologram(全息)、Pulse(脉冲,由内置切换材质支持的预设),或 Custom(自定义)。
StyleMaterialUMaterialInterface*用于带样式网格体的自定义材质(仅在 VolumeStyle = Custom 时使用)。从体积颜色接收 Color 参数。

连接回退

触发器按以下顺序解析其 OBS 连接:

  1. TargetOBSComponent:显式指定的 OBS Component(若已设置)。
  2. 关卡搜索:在关卡中找到的缓存 OBS Component(CachedOBSComponent)。
  3. Subsystem:全局 OBS Subsystem。

若已设置 TargetOBSComponent 但无法解析,触发器将静默回退到 Subsystem。

使用示例

精彩片段回放

  • 触发:OnEnter
  • 条件:RecordingRequirement = Required
  • 动作:SaveReplayBuffer

场景切换

  • 触发:OnEnter
  • 动作:SwitchScene → “Boss Arena”

音频区域

  • 触发:Both
  • 进入动作:SetInputMute “Background Music”(bMuted = true
  • 退出动作:SetInputMute “Background Music”(bMuted = false

注意事项

条件为全 AND。 每个已启用的条件都必须通过,且始终额外要求 OBS 连接。

延迟动作无法取消。 设置了 DelaySeconds > 0 的动作即使在触发 Actor 已离开体积后仍会执行。

音频动作需要精确的 OBS 输入名称。 输入名称不匹配将静默失败。请使用编辑器的实时下拉菜单以避免拼写错误。

另请参阅