Skip to content

Desuq Cafe

문서 메뉴

이 번역은 최신 영어 원문보다 늦을 수 있습니다. 영어 버전 보기

OBS Trigger Volume

AInhyeongOBSTriggerVolume은 게임플레이에서 OBS를 자동화하는 노코드 방법입니다. 레벨에 배치하고, 형태를 지정하고, 트리거 발생 시점, 실행할 동작, 그리고 충족해야 하는 조건을 모두 Details panel에서 설정할 수 있으며 Blueprint는 필요하지 않습니다.

Trigger Volume 배치

OBS Trigger Volume 액터를 레벨로 드래그하거나 (AInhyeongOBSTriggerVolume을 스폰하세요). 에디터 뷰포트에서 직접 그려지므로 위치를 잡기 쉽습니다. 형태와 크기를 설정한 다음 Details panel에서 동작/조건을 채워 넣으세요.

형태

프로퍼티타입설명
TriggerShapeEOBSTriggerShapeBox 또는 Sphere.
BoxExtentFVector각 방향의 절반 크기(박스는 각 축에서 2× 범위에 걸칩니다). 형태가 Box일 때 표시됩니다.
SphereRadiusfloat형태가 Sphere일 때 표시됩니다.

Trigger Event 모드

TriggerEvent (EOBSTriggerEvent)는 볼륨이 트리거되는 시점을 제어합니다.

모드동작
OnEnter액터가 볼륨에 진입할 때 발생합니다 (OnEnterActions 실행).
OnExit액터가 볼륨에서 이탈할 때 발생합니다 (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를 파일로 저장합니다.
SetInputMuteInputName, bMuted오디오 입력을 음소거하거나 음소거 해제합니다.
SetInputVolumeInputName, VolumeDb입력의 볼륨을 dB 단위로 설정합니다 (0 = 유니티, 음수 = 더 작게, -100…26 범위로 제한됨).
ToggleInputMuteInputName입력의 음소거 상태를 토글합니다.
SetSceneItemEnabledSceneName, SourceName, bEnabled장면 내 소스(장면 항목)를 이름으로 표시하거나 숨깁니다.
SetSourceFilterEnabledSourceName, FilterName, bEnabled소스에 있는 이름이 지정된 필터를 활성화하거나 비활성화합니다.
TriggerHotkeyByNameHotkeyName등록된 이름으로 OBS 단축키를 발생시킵니다 (예: OBSBasic.StartRecording).
TriggerMediaInputActionInputName, MediaAction미디어 소스를 제어합니다.

MediaActionEOBSMediaInputAction입니다: None, Play, Pause, Stop, Restart, Next, Previous.

각 동작에는 DelaySeconds(동작별 지연 시간, 0 이상으로 제한됨)도 있습니다.

에디터에서는 연결 중일 때 동작의 대상 필드가 실시간 OBS 드롭다운으로 표시됩니다. 장면, 입력, 소스 선택기와 소스별 필터 선택기, 단축키 선택기(열 때 필요에 따라 불러옴)가 있습니다. 선택한 이름은 동작에 저장되므로 연결을 해제한 후에도 유지됩니다.

조건

모든 조건은 논리적 AND로 평가됩니다. 즉, 동작이 실행되려면 활성화된 모든 조건을 통과해야 합니다. OBS 연결은 항상 필요하며 내부적으로 검사됩니다. 조건은 FOBSTriggerConditions에 위치합니다.

녹화 / 방송 요구사항 (3단계 상태)

프로퍼티타입
RecordingRequirementEOBSOutputStateRequirementAny / Required (녹화 중이어야 함) / Disallowed (녹화 중이면 안 됨)
StreamingRequirementEOBSOutputStateRequirementAny / Required / Disallowed

출력당 하나의 3단계 상태를 사용하므로 “켜져 있어야 함”과 “꺼져 있어야 함”을 동시에 설정하는 것은 구조적으로 불가능합니다.

장면 조건

프로퍼티타입설명
RequiredCurrentSceneFString현재 OBS 장면이 이 이름과 일치할 때만 트리거됩니다 (비어 있으면 모든 장면 허용).
ExcludedCurrentSceneFString현재 OBS 장면이 이 이름과 일치하지 않을 때만 트리거됩니다 (비어 있으면 비활성화).

에디터에서 실시간 OBS 장면 드롭다운으로 선택합니다.

오디오 임계값 조건

AudioConditionsTArray<FOBSAudioThresholdCondition>입니다. 원하는 수만큼 추가할 수 있으며 모두 통과해야 합니다.

필드타입설명
InputNameFString검사할 OBS 입력 (예: Mic/Aux). 비어 있으면 조건이 무시됩니다.
ModeEOBSAudioConditionModeTalking 또는 Idle.
ThresholdDbfloat자동 등록된 감지기의 피크-dB 임계값 (기본값 -40, -100…0 범위로 제한됨).

이 조건들은 Mic / Voice Activity Detection에서 설명하는 동일한 디바운스 마이크 활동 감지를 사용합니다. 각 입력은 BeginPlay에서 감지를 위해 자동 등록됩니다.

소스 표시 여부 조건

SourceVisibleConditionsTArray<FOBSSourceVisibleCondition>입니다. 모두 통과해야 합니다.

필드타입설명
SceneNameFString소스가 포함된 장면. 비어 있으면 조건이 무시됩니다.
SourceNameFString표시 여부를 검사할 소스(장면 항목). 비어 있으면 조건이 무시됩니다.
ModeEOBSVisibilityConditionModeVisible 또는 Hidden.

실시간 bSceneItemEnabled 캐시를 읽습니다. 캐시에서 소스를 찾을 수 없는 경우(오타, 잘못된 장면, 또는 목록이 아직 불러와지지 않은 경우) 조건이 실패합니다.

Details panel은 오디오 및 표시 여부 조건을 이름 선택기(연결 중에 OBS에서 불러옴)와 실시간 상태 점으로 렌더링하므로, 볼륨을 제작하면서 발화 중/표시 상태가 실시간으로 업데이트되는 것을 확인할 수 있습니다.

Trigger 필터 및 옵션

프로퍼티타입설명
ActorClassFilterTSubclassOf<AActor>이 클래스(또는 하위 클래스)의 액터만 트리거할 수 있습니다. 기본값 AActor는 모든 것을 허용합니다. 플레이어 전용으로 하려면 APawn으로 설정하세요.
SpecificActorFilterTSoftObjectPtr<AActor>이 특정 액터만 트리거할 수 있습니다. 설정된 경우 ActorClassFilter는 무시됩니다.
CooldownSecondsfloat트리거 간 쿨다운(볼륨 경계에서의 반복 발생을 방지합니다).
bTriggerOncebool한 번만 발생한 후 비활성화됩니다.
bTriggerEnabledbool현재 트리거가 활성화되어 있는지 여부.

런타임 헬퍼: SetTriggerEnabled(bool), ResetTrigger() (원샷 트리거를 다시 활성화), ExecuteEnterActions(), ExecuteExitActions(), ExecuteActions(Actions), AreConditionsMet(), HasValidOBSConnection(), GetActiveOBSComponent(). 이벤트 OnTriggerEnter / OnTriggerExit는 동작이 실행되기 직전에 발생합니다.

외관 / 시각화

볼륨은 에디터 뷰포트(그리고 선택적으로 플레이 중)에서 자체적으로 그려지므로 배치하고 확인하기 쉽습니다. 프로퍼티 (카테고리 OBS Trigger | Appearance):

프로퍼티타입설명
bShowDebugInEditorbool에디터 뷰포트에 볼륨을 그립니다.
bShowAtRuntimebool플레이 중(PIE / 패키지 개발 빌드)에도 그립니다. Shipping 빌드에서는 컴파일 제외됩니다.
bDrawSolidbool와이어프레임 외에 반투명 채우기를 추가합니다(박스 전용, 색상의 알파 값이 채우기를 제어합니다).
LineThicknessfloat와이어프레임 두께 (0 = 가장 얇음), 최대 10으로 제한됩니다.
DebugColorFColor그리기(및 스타일이 적용된 메시)의 색상.
bShowActionLabelbool볼륨 위에 한 줄짜리 동작 요약을 표시합니다 (예: Enter: BRB). 동일한 표시 플래그를 따릅니다.
bHideBillboardbool에디터 선택 스프라이트를 숨깁니다(에디터 전용).
VolumeStyleEOBSTriggerVolumeStyle게임 내에서도 표시되는 머티리얼 렌더링 외관을 선택합니다: None, Glow (Fresnel Glow), Hologram, Pulse (제공된 스위치 머티리얼 기반 프리셋), 또는 Custom.
StyleMaterialUMaterialInterface*스타일이 적용된 메시에 사용할 커스텀 머티리얼 (VolumeStyle = Custom일 때만 사용됨). 볼륨 Color에서 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인 동작은 트리거한 액터가 이미 볼륨을 떠난 후에도 실행됩니다.

오디오 동작은 정확한 OBS 입력 이름이 필요합니다. 일치하지 않는 입력 이름은 자동으로 실패합니다. 오타를 방지하려면 에디터의 실시간 드롭다운을 사용하세요.

참고 항목