UE5/UE5 MultiPlayerGame

MultiPlayerGame) 11. 서브시스템 액세스

PJNull 2022. 6. 13.
728x90
반응형

 

 

1.버튼 콜백 생성

 

 

 

UButton

The button is a click-able primitive widget to enable basic interaction, you can place any other widget inside a button to make a more complex and interesting click-able element in your UI.

docs.unrealengine.com

 

 

 

//Menu.h

class UButton;




protected:
	virtual bool Initialize()override;
	
private:
	UPROPERTY(meta = (BindWidget))
		UButton* Host_Btn; //위젯의 버튼 이름과 동일해야됨
	UPROPERTY(meta = (BindWidget))
		UButton* Join_Btn; //위젯의 버튼 이름과 동일해야됨
        
    UFUNCTION()
		void HostBtnClick();
	UFUNCTION()
		void JoinBtnClick();
//Menu.cpp


#include "Components/Button.h"


bool UMenu::Initialize()
{
	if (!Super::Initialize())return false;
	if (Host_Btn)Host_Btn->OnClicked.AddDynamic(this,&UMenu::HostBtnClick);
	if(Join_Btn)Join_Btn->OnClicked.AddDynamic(this, &UMenu::JoinBtnClick);
	return true;
}

 

 

 

 

2.서브시스템에 접근

 

우선 세션서브시스템에 대한 변수를 선언한다. UMultiplayerSessionSubsystem은 UGameInstanceSubsystem을 상속받고 있다.

//Menu.h

private:
	class UMultiplayerSessionSubsystem* MultiplayerSessionSubsystem;
    //모든 온라인 세션 핸들을 처리하도록 설계된 서브시스템
//Menu.cpp

#include "MultiplayerSessionSubsystem.h"

void UMenu::MenuSetUp()
{
	UGameInstance* GameInstance=GetGameInstance();
	if (GameInstance)
	{

		MultiplayerSessionSubsystem=GameInstance->GetSubsystem<UMultiplayerSessionSubsystem>();
		//게임 인스턴스에 접근
	}

}


void UMenu::HostBtnClick()
{
	if (MultiplayerSessionSubsystem)
	{
		MultiplayerSessionSubsystem->CreateSession(4,FString("Free For All"));
	}
}
728x90
반응형

댓글