본문 바로가기
[ Unreal5 ]/- 언리얼엔진5 멀티

언리얼엔진5 Menu Subsystem Add

by MRG 2025. 3. 4.
728x90
반응형

 

▣ Initialize() 함수 (가상 함수)
위젯이 생성될 때 호출되는 함수로, UUserWidget 클래스에서 상속받은 후 override 키워드로 재정의됨.
버튼 이벤트 바인딩 등을 설정하는 데 사용될 가능성이 있음.


▣ UPROPERTY(meta = (BindWidget))
BindWidget 속성을 사용하면, UMG(언리얼 모션 그래픽)에서 디자이너가 만든 버튼 위젯을 C++ 코드의 변수에 자동으로 연결할 수 있음.
즉, HostButton과 JoinButton은 WB_Widget에서 같은 이름으로 존재하는 버튼과 자동으로 매칭됨.
UButton* 타입으로 선언되어 있으며, UI에서 버튼을 클릭하면 특정 동작을 수행하도록 연결 가능.

 

▣ meta란?
meta는 Unreal Engine의 UPROPERTY와 UFUNCTION 매크로에서 추가적인 메타데이터를 제공하는 옵션입니다.
즉, 특정 속성을 지정하여 언리얼 엔진이 해당 변수나 함수의 동작을 조정할 수 있도록 합니다.

설명: BindWidget을 사용하면, UMG에서 디자인한 위젯과 C++ 변수가 자동으로 연결됩니다.
조건: 위젯 블루프린트에서의 변수 이름과 C++ 변수 이름이 동일해야 함.

 

meta 속성설명

 

BindWidget UMG 위젯을 C++ 변수에 자동 바인딩
AllowPrivateAccess = "true" private 변수도 블루프린트에서 접근 가능
ClampMin = "값" 변수의 최소값 제한
ClampMax = "값" 변수의 최대값 제한
Tooltip = "설명" 변수에 대한 설명을 에디터에서 표시
EditCondition = "변수명" 특정 변수가 true일 때만 해당 변수 수정 가능
DisplayName = "이름" 언리얼 에디터에서 변수의 표시 이름 변경

 

 

▣ UFUNCTION() 매크로
HostButtonClicked()와 JoinButtonClicked() 함수는 버튼 클릭 이벤트를 처리하는 함수.
UFUNCTION을 사용하면 UI 위젯 내부에서 동적으로 버튼과 이벤트를 연결할 수 있음.


▣ UMultiplaySessionsSubsystem* MultiplaySessionsSubsystem
멀티플레이 세션을 관리하는 서브시스템 클래스의 포인터.
Unreal Engine의 **서브시스템(Subsystem)**을 활용하여 네트워크 멀티플레이 관련 기능을 분리하고 관리하는 역할.
UMultiplaySessionsSubsystem은 커스텀 클래스로, 멀티플레이 관련 기능을 확장하는 데 사용될 가능성이 높음.

 

 

 

 

▣ 코드 설명
GetGameInstance()를 호출하여 현재 게임 인스턴스를 가져옴.
GameInstance->GetSubsystem<UMultiplaySessionsSubsystem>()을 사용하여 멀티플레이 세션 서브시스템을 가져와 변수 MultiplaySessionsSubsystem에 저장.
UMultiplaySessionsSubsystem은 세션을 생성하고 관리하는 커스텀 서브시스템 클래스.

 

 

▣ 코드 설명

Super::Initialize()를 먼저 호출하여 기본 초기화를 수행.
HostButton과 JoinButton의 클릭 이벤트를 바인딩하여, 버튼을 클릭하면 해당 함수가 실행되도록 설정.

 

 

 코드 설명

GEngine->AddOnScreenDebugMessage()를 사용하여 화면에 디버그 메시지를 표시 (디버깅용).
MultiplaySessionsSubsystem을 통해 새로운 멀티플레이 세션을 생성 (CreateSession(8, "FreeForAll")).
8 → 최대 플레이어 수
"FreeForAll" → 게임 모드 (모두가 적)

 

 

▣ 언리얼엔진 에디터를 닫고 Binaries, Intermediate 폴더를 삭제하고 Generate을 합니다. 

 

 

▣ 다시 프로젝트를 열고 버튼을 클릭하면 함수에 있는 TEXT가 호출되는걸 확인할 수 있습니다. 

728x90
반응형

댓글