Editor Subsystem
UInhyeongOBSEditorSubsystem을 사용하면 플레이 모드에 진입하지 않고도 에디터 코드에서 OBS를 제어할 수 있습니다(연결, 장면 전환, 녹화, 상태 읽기 등). 런타임 Subsystem의 핸들러 접근 방식을 그대로 반영하므로, 동일한 도메인 핸들러(Scenes, Audio, Outputs 등)를 에디터 툴링에서도 사용할 수 있습니다.
동일한 기능을 클릭 방식으로 제어하려면 Details Panels를 대신 사용하세요.
Subsystem 접근
UInhyeongOBSEditorSubsystem* EditorOBS = GEditor->GetEditorSubsystem<UInhyeongOBSEditorSubsystem>();
연결
EditorOBS->Connect("localhost", 4455, "password");
EditorOBS->Disconnect();
EditorOBS->IsConnected();
EditorOBS->GetConnectionState();
Editor Subsystem은 클라이언트를 한 번만 생성하고 재연결 시에도 이를 유지하므로, 이에 대한 바인딩은 안정적으로 유지됩니다.
핸들러 접근
핸들러 접근 방식은 런타임 Subsystem과 동일합니다.
EditorOBS->GetOutputs();
EditorOBS->GetScenes();
EditorOBS->GetMediaInputs();
EditorOBS->GetAudio(); // Audio inputs, volume, mute
EditorOBS->GetInputSettings(); // Source settings (text, browser, image, etc.)
EditorOBS->GetStudioMode();
EditorOBS->GetConfig();
EditorOBS->GetTransitions();
EditorOBS->GetScreenshots();
EditorOBS->GetFilters();
직접 제어
EditorOBS->SetCurrentScene("MyScene");
EditorOBS->StartRecord();
EditorOBS->SaveReplayBuffer();
EditorOBS->SetInputMute("Mic/Aux", true);
EditorOBS->AdjustInputVolume("Desktop Audio", -3.0f);
Studio Mode
EditorOBS->SetStudioModeEnabled(true);
EditorOBS->IsStudioModeEnabled();
EditorOBS->SetCurrentPreviewScene("Preview Scene");
EditorOBS->GetPreviewSceneName();
EditorOBS->TriggerStudioModeTransition();
Config: 장면 모음
EditorOBS->GetSceneCollectionList();
EditorOBS->SetCurrentSceneCollection("My Collection");
EditorOBS->CreateSceneCollection("New Collection");
EditorOBS->GetCachedSceneCollections();
EditorOBS->GetCurrentSceneCollectionName();
Config: 프로필
EditorOBS->GetProfileList();
EditorOBS->SetCurrentProfile("Streaming");
EditorOBS->CreateProfile("New Profile");
EditorOBS->RemoveProfile("Old Profile");
EditorOBS->GetCachedProfiles();
EditorOBS->GetCurrentProfileName();
Config: 비디오 설정
EditorOBS->GetVideoSettings();
EditorOBS->SetVideoSettings(Settings);
EditorOBS->SetBaseResolution(1920, 1080);
EditorOBS->SetOutputResolution(1280, 720);
EditorOBS->SetFPS(60, 1);
EditorOBS->GetCachedVideoSettings();
Config: 방송 서비스 설정
EditorOBS->GetConfig()->GetStreamServiceSettings();
EditorOBS->GetConfig()->SetStreamServiceSettings(Settings);
EditorOBS->GetConfig()->SetSimpleRTMPSettings("rtmp://server.com/live", "stream-key");
EditorOBS->GetConfig()->GetCachedStreamServiceSettings();
전환
EditorOBS->GetSceneTransitionList();
EditorOBS->GetCurrentSceneTransition();
EditorOBS->SetCurrentSceneTransition("Fade");
EditorOBS->SetCurrentSceneTransitionDuration(500);
EditorOBS->GetCurrentTransitionName();
EditorOBS->GetCurrentTransitionDuration();
EditorOBS->IsTransitionActive();
이벤트
EditorOBS->OnConnected.AddDynamic(...);
EditorOBS->OnRecordStateChanged.AddDynamic(...);