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

 

세션 생성과 마찬가지로, 세션 검색도 검색 요청 후에 응답을 받아 델리게이트 리스트의 델리게이트들이 발동된다.

  • FOnlineSessionSearch에는 TArray<FOnlineSessionSearchResult> 타입의 SearchResults라는 프로퍼티가 있으므로 지역이 아닌 멤버 변수로 선언해준다.

 

 

생성자 리스트에서 델리게이트를 바인딩하고 할당해준다.

 

 

IOnlineSessionPtr->AddOnFindSessionsCompleteDelegate_Handle() 함수로 세션 검색 요청에 대한 응답이 오면 발동할 델리게이트 리스트에 델리게이트를 등록할 수 있다.

  • 여러 개의 함수가 등록된 하나의 델리게이트가 아닌, 여러 개의 델리게이트를 델리게이트 리스트에 등록하는 것이다.
  • 등록한 모든 델리게이트가 발동한다.

 

세션 검색 옵션을 다음과 같다.

  • MaxSearchResults: 최대 결과 수
  • bIsLanQuery: LAN 검색 여부
  • QuerySettings.Set(SEARCH_PRESENCE, true, EOnlineComparisonOp::Equals): 지역 검색으로 검색

 

설정을 & 타입의 레퍼런스로 받았던 CreateSession() 함수와 달리 FindSessions() 함수는 TSharedRef 타입으로 설정을 받는다.

  • TSharedPtr<T>.ToSharedRef() 로 TSharedRef 타입의 레퍼런스를 가져올 수 있다.

 

TSharedRef<FOnlineSessionSearch> 타입의 지역 변수를 만들지 않고 멤버 변수로 TSharedPtr<FOnlineSessionSearch> 타입의 변수를 만든 이유는, TArray<FOnlineSessionSearchResult> 타입의 SearchResults라는 결과를 델리게이트에 등록된 함수에서 사용하기 위함이다.

 

 

모든 검색 결과를 순회하면서 세션 ID와 세션 소유자의 사용자 이름을 출력한다.

 

 

BP에서 1번 키를 누르면 세션 생성, 2번 키를 누르면 세션에 참가하도록 설정한다.

 

 

패키징 후 한 컴퓨터에서 1번 키를 눌러 세션을 생성하고, 다른 컴퓨터에서 2번 키를 눌러 세션에 참가한다.

 

스팀에서 지정해준 세션 ID와 세션을 생성한 사람의 Steam 사용자 아이디가 표시된다.

 

profile

Make Unreal REAL.

@diesuki4

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

검색 태그