Skip to content

Desuq Cafe

문서 메뉴

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

네이티브 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)은 이벤트 문서를 확인하세요.