OBS Trigger Volume
AInhyeongOBSTriggerVolume は、ゲームプレイから OBS を自動化するノーコードの手段です。レベルに配置し、形状を設定して、いつ発火するか・どのアクションを実行するか・どの条件を満たす必要があるかを Details パネルからすべて設定できます。Blueprint は不要です。
Trigger Volume の配置
OBS Trigger Volume アクタをレベルにドラッグするか、AInhyeongOBSTriggerVolume をスポーンします。エディタのビューポートに自身を描画するので、位置の調整が容易です。形状とサイズを設定し、Details パネルでアクション・条件を入力してください。
形状
| プロパティ | 型 | 備考 |
|---|---|---|
TriggerShape | EOBSTriggerShape | Box または Sphere。 |
BoxExtent | FVector | 各方向の半サイズ(ボックスは各軸で 2 倍の範囲に広がります)。形状が Box のときに表示されます。 |
SphereRadius | float | 形状が Sphere のときに表示されます。 |
トリガーイベントモード
TriggerEvent(EOBSTriggerEvent)は、ボリュームがいつ発火するかを制御します。
| モード | 動作 |
|---|---|
OnEnter | アクタがボリュームに侵入したときに発火します(OnEnterActions を実行)。 |
OnExit | アクタがボリュームから退出したときに発火します(OnExitActions を実行)。 |
Both | 侵入・退出の両方で発火し、それぞれ別々のアクション配列を使用します。 |
OnEnterActions 配列は OnEnter・Both のときに表示され、OnExitActions は OnExit・Both のときに表示されます。
アクション
各アクションは FOBSTriggerAction です。ActionType を設定すると関連フィールドが表示されます。アクションの一覧(EOBSTriggerActionType):
| アクション | 使用するパラメーター | 説明 |
|---|---|---|
SwitchScene | SceneName | 指定した OBS シーンに切り替えます。 |
StartRecording | なし | 録画を開始します。 |
StopRecording | なし | 録画を停止します。 |
ToggleRecording | なし | 録画状態を切り替えます。 |
PauseRecording | なし | 録画を一時停止します。 |
ResumeRecording | なし | 録画を再開します。 |
StartStreaming | なし | 配信を開始します。 |
StopStreaming | なし | 配信を停止します。 |
ToggleStreaming | なし | 配信状態を切り替えます。 |
StartVirtualCam | なし | 仮想カメラを開始します。 |
StopVirtualCam | なし | 仮想カメラを停止します。 |
ToggleVirtualCam | なし | 仮想カメラを切り替えます。 |
StartReplayBuffer | なし | リプレイバッファを開始します。 |
StopReplayBuffer | なし | リプレイバッファを停止します。 |
SaveReplayBuffer | なし | リプレイバッファをファイルに保存します。 |
SetInputMute | InputName, bMuted | 音声入力をミュートまたはミュート解除します。 |
SetInputVolume | InputName, VolumeDb | 入力の音量を dB で設定します(0 = ユニティ、負の値 = 小さく、-100〜26 にクランプ)。 |
ToggleInputMute | InputName | 入力のミュート状態を切り替えます。 |
SetSceneItemEnabled | SceneName, SourceName, bEnabled | シーン内のソース(シーンアイテム)を名前で表示または非表示にします。 |
SetSourceFilterEnabled | SourceName, FilterName, bEnabled | ソース上の指定したフィルターを有効化または無効化します。 |
TriggerHotkeyByName | HotkeyName | 登録名で OBS ホットキーを発火します(例:OBSBasic.StartRecording)。 |
TriggerMediaInputAction | InputName, MediaAction | メディアソースを操作します。 |
MediaAction は EOBSMediaInputAction です:None、Play、Pause、Stop、Restart、Next、Previous。
各アクションには DelaySeconds(アクションごとの遅延、0 以上にクランプ)もあります。
エディタ上では、アクションのターゲットフィールドは接続中に OBS のライブドロップダウンになります:シーン、入力、ソースのピッカーに加え、ソースごとの Filter ピッカーと Hotkey ピッカー(開いたときにオンデマンドで取得)が利用できます。選択した名前はアクションに保存されるため、切断後も保持されます。
条件
すべての条件は論理 AND として評価されます。つまり、アクションを実行するには有効なすべての条件を満たす必要があります。OBS 接続は常に必須であり、内部でチェックされます。条件は FOBSTriggerConditions に格納されます。
録画・配信の要件(三値)
| プロパティ | 型 | 値 |
|---|---|---|
RecordingRequirement | EOBSOutputStateRequirement | Any / Required(録画中である必要がある) / Disallowed(録画中であってはならない) |
StreamingRequirement | EOBSOutputStateRequirement | Any / Required / Disallowed |
出力ごとの三値設定により、「オンでなければならない」と「オフでなければならない」を同時に設定することは構造的に不可能です。
シーン条件
| プロパティ | 型 | 備考 |
|---|---|---|
RequiredCurrentScene | FString | 現在の OBS シーンがこの名前と一致する場合のみトリガーします(空 = 任意のシーン)。 |
ExcludedCurrentScene | FString | 現在の OBS シーンがこの名前と一致しない場合のみトリガーします(空 = 無効)。 |
エディタでは OBS のライブシーンドロップダウンから選択します。
音声しきい値条件
AudioConditions は TArray<FOBSAudioThresholdCondition> です。任意の数を追加でき、すべて通過する必要があります。
| フィールド | 型 | 備考 |
|---|---|---|
InputName | FString | テスト対象の OBS 入力(例:Mic/Aux)。空 = 条件を無視。 |
Mode | EOBSAudioConditionMode | Talking または Idle。 |
ThresholdDb | float | 自動登録された検出器のピーク dB しきい値(デフォルト -40、-100〜0 にクランプ)。 |
これらは Mic / Voice Activity Detection で説明されているデバウンスされたマイクアクティビティ検出と同じ仕組みを使用します。各入力は BeginPlay 時に検出用として自動登録されます。
ソース表示状態条件
SourceVisibleConditions は TArray<FOBSSourceVisibleCondition> です。すべて通過する必要があります。
| フィールド | 型 | 備考 |
|---|---|---|
SceneName | FString | ソースが含まれるシーン。空 = 条件を無視。 |
SourceName | FString | 表示状態をテストするソース(シーンアイテム)。空 = 条件を無視。 |
Mode | EOBSVisibilityConditionMode | Visible または Hidden。 |
ライブの bSceneItemEnabled キャッシュを読み取ります。キャッシュに見つからないソース(スペルミス、シーンの指定誤り、またはリストが未取得の場合)は条件を失敗させます。
Details パネルでは、音声・表示状態の条件に名前ピッカー(OBS 接続中に入力済み)とライブのステータスドットが表示されるため、ボリュームを作成しながら発話中・表示状態のリアルタイム更新を確認できます。
トリガーフィルターとオプション
| プロパティ | 型 | 備考 |
|---|---|---|
ActorClassFilter | TSubclassOf<AActor> | このクラス(または子クラス)のアクタのみトリガーできます。デフォルトの AActor はすべてを許可します。プレイヤーのみにするには APawn に設定してください。 |
SpecificActorFilter | TSoftObjectPtr<AActor> | この特定のアクタのみトリガーできます。設定されている場合、ActorClassFilter は無視されます。 |
CooldownSeconds | float | トリガー間のクールダウン(ボリュームのエッジでの連続発火を防ぎます)。 |
bTriggerOnce | bool | 一度だけ発火して無効化します。 |
bTriggerEnabled | bool | トリガーが現在有効かどうか。 |
ランタイムのヘルパー関数:SetTriggerEnabled(bool)、ResetTrigger()(ワンショットトリガーを再有効化)、ExecuteEnterActions()、ExecuteExitActions()、ExecuteActions(Actions)、AreConditionsMet()、HasValidOBSConnection()、GetActiveOBSComponent()。イベント OnTriggerEnter / OnTriggerExit は、アクションが実行される直前に発火します。
外観・視覚化
ボリュームはエディタのビューポート(およびオプションでプレイ中)に自身を描画するため、配置や確認が容易です。プロパティ(カテゴリ OBS Trigger | Appearance):
| プロパティ | 型 | 備考 |
|---|---|---|
bShowDebugInEditor | bool | エディタのビューポートにボリュームを描画します。 |
bShowAtRuntime | bool | プレイ中(PIE・パッケージ開発ビルド)でも描画します。Shipping ビルドではコンパイルされません。 |
bDrawSolid | bool | ワイヤーフレームに加えて半透明の塗りつぶしを描画します(ボックスのみ。カラーのアルファが塗りつぶしを制御します)。 |
LineThickness | float | ワイヤーフレームの太さ(0 = 最細)。最大 10 にハードキャップされています。 |
DebugColor | FColor | 描画色(およびスタイル付きメッシュの色)。 |
bShowActionLabel | bool | ボリュームの上にアクションの概要を 1 行で表示します(例:Enter: BRB)。同じ表示フラグに従います。 |
bHideBillboard | bool | エディタの選択スプライトを非表示にします(エディタ専用)。 |
VolumeStyle | EOBSTriggerVolumeStyle | ゲーム内でも表示されるマテリアルレンダリングの外観(オプション):None、Glow(Fresnel Glow)、Hologram、Pulse(同梱のスイッチマテリアルによるプリセット)、または Custom。 |
StyleMaterial | UMaterialInterface* | スタイル付きメッシュ用の独自マテリアル(VolumeStyle = Custom のときのみ使用)。ボリュームカラーから Color パラメーターを受け取ります。 |
接続フォールバック
トリガーは次の順序で OBS 接続を解決します。
TargetOBSComponent:明示的に割り当てられた OBS Component(設定されている場合)。- レベル検索:レベル内で見つかったキャッシュ済みの OBS Component(
CachedOBSComponent)。 - サブシステム:グローバルな 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のアクションは、トリガーしたアクタがすでにボリュームから退出していても発火します。
音声アクションには正確な OBS 入力名が必要です。 入力名が一致しない場合、エラーなしに失敗します。スペルミスを避けるため、エディタのライブドロップダウンを使用してください。