UE5

서버 연동 프로젝트 KU - 콜백되는 서브 시스템 함수 만들기

게임 개발 2024. 5. 24. 00:54

 

 

세션 서브시스템 클래스의 델리게이트를 어떻게 선언하는지 알아보자.

해당 서브시스템은 메뉴클래스에서 받아온 입력들을 서버에 연동되도록 하는 기능을 가지고있다.

그렇다면 두 클래스간의 소통이 필요할 텐데,

이를 델리게이트를 통해서 연결해주었으며, 델리게이트 핸들을 통해 간접적으로 전달한다.

 

 

 


즉 해당 클래스의 소통은

IOnlineSessionPtr 자료형인 SessionInterface를 이용해

서버에 값을 전달하며,

델리게이트를 바인딩함으로써 메뉴에서 받아온 값을

서브시스템에서 서버로 전달하는 것이다.

 

 

호출될 델리게이트 생성 UMultiplayerSessionsSubsystem.h 파일

 

 

해당 respon cumtom delegate를 제작하기 위해

멀티 캐스트 델리게이트를 선언하기 위해서 매크로를 사용했다.

 

델리게이트를 받을 함수 생성 UMenu.h

 

Menu Class에서 델리게이트에 정보를 전달해줄 함수를 생성한다.

 

Subsystem Class에서 Menu에서 받아온 값을 전달받은 뒤 서버에 값을 전달해주는 코드

 

해당 값을 델리게이트로 받아온 뒤 Subsystem Class에서 활용되는 코드의 일부이다.

 

 

제작 순서

 

델리게이트 -> 델리게이트 바인딩 및 델리게이트 핸들 추가->

menu에서 입력값 만들기 및 Broadcast 

메뉴에서 받아온 값이 제대로 들어왔는지 ?

성공 시, 서브시스템에서 해당 값 처리 및 서버에 처리 값 전달 Broadcast  :  

실패 시, false 값 설정 후 ClearOnCompleteDelegate_Handle 호출 후

메뉴에 실패했음을 알리는 Handle값으로 초기화 및

실패 값 처리값  Broadcast로 전달

-> 서브시스템으로 부터 받아온 값 메뉴에서 로직 생성...

 

이렇게 서로 연결된 친구 함수들을 계속 만들어나간다.

 

 

실패했을 시, 실패한 로직에서 초기화해준다.

 

성공했을 시, Handle에 들어있는 값으로 초기화 해준다.

 

 

성공한 값을 가져와서 플레이어 컨트롤러에서 해당 주소값을 가진 인터넷에 접속하도록 한다.