Make Unreal REAL.
article thumbnail
Unreal Engine 5 C++ Multiplayer Shooter

 

델리게이트를 통해 종속성을 유지하는 건 좋은 방법이다.

  • 델리게이트에 누가 함수를 등록했는지 알 필요가 없다.
  • 다이나믹 델리게이트는 직렬화가 가능해서 BP 그래프에서 저장, 로드될 수 있다.
  • BP에서 델리게이트는 이벤트 디스패처이다.


Menu 위젯에서 Host 버튼을 눌러 MultiplayerSessionsSubsystem의 CreateSession() 함수를 호출하고 난 후, 세션 생성이 완료되면 다시 Menu 클래스에 알리기 위해 FMultiplayerOnCreateSessionComplete라는 새로운 델리게이트 타입을 선언한다.

  • 델리게이트 타입 선언 후 빨간 줄이 생길 때는 VS 파일을 재생성해주면 된다.

 

 

방금 MultiplayerSessionsSubsystem 클래스에 선언한 델리게이트에 등록할 OnCreateSession() 함수를 선언한다.

  • 멀티캐스트 델리게이트에 등록할 것이기 때문에 UFUNCTION() 매크로를 지정해준다.

 

 

OnCreateSession() 함수를 구현한다.

 

Host 버튼을 눌렀을 때 세션 생성 요청 후 바로 다음 레벨로 이동하던 것을 세션 생성이 완료되면 레벨로 이동하도록 변경한다.

 


생성자에서 세션 생성이 완료되었을 때 자체적으로 발동할 델리게이트에 OnCreateSession() 함수를 바인딩한다.

 


CreateSession() 함수에 세션 생성 실패시, Menu::OnCreateSession() 함수를 호출하기 위한 자체 델리게이트의 발동 부분을 추가한다.

  • 델리게이트 리스트에 등록된 델리게이트는 CreateSession() 함수의 성공 여부와 관계 없이 발동하기 때문에, OnCreateSessionComplete() 함수에 한번에 구현해도 상관 없다.


OnCreateSessionComplete() 함수에도 bWasSuccessful 인자를 제외하고 동일하게 작성한다.

 

 

참고로 CreateSession() 함수에서 델리게이트를 발동하는 부분이다.

 

 

MultiplayerSessionsSubsystem의 델리게이트에 Menu 클래스의 OnCreateSession() 함수를 세션 생성의 콜백함수로 등록하는 데 성공했다.

 

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그