네이티브 C++ 델리게이트
Blueprint에서 할당 가능한 모든 OBS 이벤트(FOBSOn*)에는 Native 접미사가 붙은 네이티브 C++ 대응 델리게이트(FOBSOn*Native)가 존재합니다. 네이티브 델리게이트는 동적 변형 대신 DECLARE_MULTICAST_DELEGATE_*를 사용하므로, Blueprint 전용 동적 델리게이트로는 불가능한 C++ 람다, 멤버 함수, AddSP/AddUObject 바인딩을 모두 지원합니다.
네이티브 델리게이트는 Blueprint 대응 델리게이트와 동일한 파라미터를 전달합니다(파라미터 이름은 이벤트 문서에서 확인할 수 있습니다). 이 델리게이트들은 플러그인이 내부적으로 핸들러 캐시를 동기화하고 이벤트 피라미드를 통해 이벤트를 전달하는 데 사용됩니다. 또한 UObject가 아닌 C++ 코드(예: AddSP를 동적 델리게이트에 사용할 수 없는 에디터 디테일 패널 커스터마이징)의 올바른 바인딩 지점입니다.
사용법
네이티브 델리게이트에 람다를 바인딩할 수 있습니다. 독립적인 수명을 가진 객체에서 바인딩할 때는 항상 약한 참조를 캡처하고, 람다 내부에서 유효성을 확인하세요.
// Connection
OBS->OnConnectedNative.AddLambda([]() { /* ... */ });
OBS->OnDisconnectedNative.AddLambda([](const FString& Reason) { /* ... */ });
// A handler-level event (lambda)
Client->GetScenes()->OnCurrentSceneChangedNative.AddLambda(
[](const FString& SceneName, const FString& SceneUuid)
{
UE_LOG(LogTemp, Log, TEXT("Now on scene: %s"), *SceneName);
});
// Member-function binding from a UObject
Client->GetOutputs()->OnRecordStateChangedNative.AddUObject(
this, &UMyClass::HandleRecordStateChanged);
AddSP(공유 포인터) 바인딩도 동일한 방식으로 추가합니다. 나중에 Remove()가 필요한 경우 반환된 FDelegateHandle을 보관하고, 바인딩된 객체가 소멸되기 전에 바인딩을 해제하세요.
연결 및 재연결
| 네이티브 델리게이트 | 시그니처 |
|---|
FOBSOnConnectedNative | () |
FOBSOnDisconnectedNative | (const FString& Reason) |
FOBSOnConnectionErrorNative | (const FString& Error) |
FOBSOnReconnectingNative | (int32 AttemptNumber) |
FOBSOnReconnectFailedNative | () |
FOBSOnRequestFailedNative | (const FString& RequestType, int32 StatusCode, const FString& Comment) |
출력 (녹화 / 방송 / 가상 카메라 / Replay Buffer)
| 네이티브 델리게이트 | 시그니처 |
|---|
FOBSOnStreamStateChangedNative | (bool bActive, EOBSOutputState State) |
FOBSOnRecordStateChangedNative | (bool bActive, EOBSOutputState State) |
FOBSOnRecordingStoppedNative | (bool bActive, EOBSOutputState State, const FString& OutputPath) |
FOBSOnVirtualCamStateChangedNative | (bool bActive, EOBSOutputState State) |
FOBSOnReplayBufferStateChangedNative | (bool bActive, EOBSOutputState State) |
FOBSOnReplayBufferSavedNative | (const FString& SavedReplayPath) |
FOBSOnRecordFileChangedNative | (const FString& NewOutputPath) |
FOBSOnRecordDirectoryReceivedNative | (const FString& RecordDirectory) |
FOBSOnOutputListReceivedNative | (const TArray<FOBSOutput>& Outputs) |
FOBSOnOutputStatusReceivedNative | (const FOBSOutputStatus& Status) |
장면 및 장면 항목
| 네이티브 델리게이트 | 시그니처 |
|---|
FOBSOnCurrentSceneChangedNative | (const FString& SceneName, const FString& SceneUuid) |
FOBSOnSceneListUpdatedNative | () |
FOBSOnSceneItemTransformChangedNative | (const FString& SceneName, int32 SceneItemId, const FOBSSceneItemTransform& Transform) |
FOBSOnSceneItemCreatedNative | (const FString& SceneName, const FString& SourceName, int32 SceneItemId, int32 SceneItemIndex) |
FOBSOnSceneItemRemovedNative | (const FString& SceneName, const FString& SourceName, int32 SceneItemId) |
FOBSOnSceneItemLockStateChangedNative | (const FString& SceneName, int32 SceneItemId, bool bLocked) |
FOBSOnSceneItemEnableStateChangedNative | (const FString& SceneName, int32 SceneItemId, bool bEnabled) |
FOBSOnSceneItemListReindexedNative | (const FString& SceneName) |
FOBSOnSceneCreatedNative | (const FString& SceneName, const FString& SceneUuid, bool bIsGroup) |
FOBSOnSceneRemovedNative | (const FString& SceneName, const FString& SceneUuid, bool bIsGroup) |
FOBSOnSceneNameChangedNative | (const FString& SceneUuid, const FString& OldSceneName, const FString& NewSceneName) |
FOBSOnTransitionOverrideReceivedNative | (const FString& SceneName, const FOBSSceneTransitionOverride& Override) |
오디오
| 네이티브 델리게이트 | 시그니처 |
|---|
FOBSOnInputListUpdatedNative | () |
FOBSOnInputMuteStateChangedNative | (const FString& InputName, bool bMuted) |
FOBSOnInputVolumeChangedNative | (const FString& InputName, float VolumeDb, float VolumeMul) |
FOBSOnInputVolumeMetersNative | (const TArray<FOBSInputVolumeMeter>& Meters) |
FOBSOnInputActiveStateChangedNative | (const FString& InputName, bool bVideoActive) |
FOBSOnMicActivityChangedNative | (const FString& InputName, bool bActive) |
FOBSOnInputCreatedNative | (const FString& InputName, const FString& InputUuid, const FString& InputKind, const FString& UnversionedInputKind) |
FOBSOnInputRemovedNative | (const FString& InputName, const FString& InputUuid) |
FOBSOnInputNameChangedNative | (const FString& InputUuid, const FString& OldInputName, const FString& NewInputName) |
FOBSOnInputKindListReceivedNative | (const TArray<FString>& InputKinds) |
FOBSOnInputAudioBalanceChangedNative | (const FString& InputName, const FString& InputUuid, float AudioBalance) |
FOBSOnInputAudioSyncOffsetChangedNative | (const FString& InputName, const FString& InputUuid, int32 SyncOffsetMs) |
FOBSOnInputAudioTracksChangedNative | (const FString& InputName, const FString& InputUuid, const FOBSAudioTracks& AudioTracks) |
FOBSOnInputAudioMonitorTypeChangedNative | (const FString& InputName, const FString& InputUuid, EOBSMonitorType MonitorType) |
FOBSOnSpecialInputsReceivedNative | (const FOBSSpecialInputs& SpecialInputs) |
OnInputVolumeMetersNative, OnInputActiveStateChangedNative, OnMicActivityChangedNative는 고빈도 / 옵트인 스트림입니다. 음성 활동 감지를 참고하세요.
입력 설정
| 네이티브 델리게이트 | 시그니처 |
|---|
FOBSOnInputSettingsChangedNative | (const FString& InputName, const FString& InputUuid) |
FOBSOnInputSettingsReceivedNative | (const FString& InputName, const FString& InputKind, TSharedPtr<FJsonObject> Settings) |
FOBSOnInputPropertyItemsReceivedNative | (const FString& InputName, const FString& PropertyName, const TArray<FOBSPropertyItem>& Items) |
OnInputSettingsReceivedNative는 네이티브 전용으로, 원시 TSharedPtr<FJsonObject> 설정 객체를 노출합니다(Blueprint 이벤트는 문자열로 대신 제공합니다).
미디어 입력
| 네이티브 델리게이트 | 시그니처 |
|---|
FOBSOnMediaInputPlaybackStartedNative | (const FString& InputName) |
FOBSOnMediaInputPlaybackEndedNative | (const FString& InputName) |
FOBSOnMediaInputActionTriggeredNative | (const FString& InputName, EOBSMediaInputAction Action) |
FOBSOnMediaInputStatusReceivedNative | (const FOBSMediaInputStatus& Status) |
전환
| 네이티브 델리게이트 | 시그니처 |
|---|
FOBSOnCurrentTransitionChangedNative | (const FString& TransitionName) |
FOBSOnTransitionDurationChangedNative | (int32 DurationMs) |
FOBSOnTransitionStartedNative | (const FString& TransitionName) |
FOBSOnTransitionEndedNative | (const FString& TransitionName) |
FOBSOnTransitionVideoEndedNative | (const FString& TransitionName) |
FOBSOnTransitionListUpdatedNative | () |
스튜디오 모드
| 네이티브 델리게이트 | 시그니처 |
|---|
FOBSOnStudioModeStateChangedNative | (bool bStudioModeEnabled) |
FOBSOnCurrentPreviewSceneChangedNative | (const FString& SceneName, const FString& SceneUuid) |
필터
| 네이티브 델리게이트 | 시그니처 |
|---|
FOBSOnSourceFilterCreatedNative | (const FString& SourceName, const FString& FilterName, const FString& FilterKind, int32 FilterIndex, bool bFilterEnabled) |
FOBSOnSourceFilterRemovedNative | (const FString& SourceName, const FString& FilterName) |
FOBSOnSourceFilterNameChangedNative | (const FString& SourceName, const FString& OldFilterName, const FString& FilterName) |
FOBSOnSourceFilterSettingsChangedNative | (const FString& SourceName, const FString& FilterName) |
FOBSOnSourceFilterEnableStateChangedNative | (const FString& SourceName, const FString& FilterName, bool bFilterEnabled) |
FOBSOnSourceFilterListReindexedNative | (const FString& SourceName) |
FOBSOnSourceFilterListReceivedNative | (const FString& SourceName) |
OnSourceFilterListReceivedNative는 네이티브 전용입니다. GetSourceFilterList 응답이 파싱된 후 발생하며(일치하는 OBS 푸시 이벤트는 없습니다), 에디터 UI가 해당 소스의 필터 드롭다운을 새로 고침할 수 있도록 합니다.
스크린샷
| 네이티브 델리게이트 | 시그니처 |
|---|
FOBSOnScreenshotCapturedNative | (const FOBSScreenshotResult& Result) |
FOBSOnScreenshotSavedNative | (const FString& SourceName, const FString& FilePath) |
스크린샷 이벤트는 핸들러 레벨 전용입니다. Client->GetScreenshots()를 통해 접근하세요(Subsystem에서 재방송되지 않습니다).
구성 (장면 모음 / 프로필 / 비디오 / 방송 서비스 / 영구 데이터)
| 네이티브 델리게이트 | 시그니처 |
|---|
FOBSOnCurrentSceneCollectionChangingNative | (const FString& SceneCollectionName) |
FOBSOnCurrentSceneCollectionChangedNative | (const FString& SceneCollectionName) |
FOBSOnSceneCollectionListChangedNative | () |
FOBSOnCurrentProfileChangingNative | (const FString& ProfileName) |
FOBSOnCurrentProfileChangedNative | (const FString& ProfileName) |
FOBSOnProfileListChangedNative | () |
FOBSOnVideoSettingsReceivedNative | (const FOBSVideoSettings& Settings) |
FOBSOnStreamServiceSettingsReceivedNative | (const FOBSStreamServiceSettings& Settings) |
FOBSOnPersistentDataReceivedNative | (EOBSDataRealm Realm, const FString& SlotName, const FString& SlotValueJson) |
일반 (성능 통계 / 단축키 / 벤더 / 커스텀 이벤트)
| 네이티브 델리게이트 | 시그니처 |
|---|
FOBSOnStatsReceivedNative | (const FOBSStats& Stats) |
FOBSOnHotkeyListReceivedNative | (const TArray<FString>& HotkeyNames) |
FOBSOnExitStartedNative | () |
FOBSOnVendorEventNative | (const FString& VendorName, const FString& EventType, const FString& EventDataJson) |
FOBSOnCustomEventNative | (const FString& EventDataJson) |
FOBSOnVendorResponseReceivedNative | (const FString& VendorName, const FString& RequestType, const FString& ResponseDataJson) |
참고: Blueprint 이벤트 이름과 각 이벤트가 사용 가능한 레벨(핸들러 / Subsystem / Component)은 이벤트 문서를 확인하세요.