유니티 엔진 - 게임 프로젝트/데디케이트 기반 모바일 게임

로비 구현 - 2) 상위 점수 플레이어 정보 + 접속중인 플레이어 정보 사용

monstro 2025. 12. 16. 11:50
728x90
반응형

- 개요

높은 점수를 갖고 있는 플레이어들의 정보접속중인 플레이어들의 정보를 서버로부터 받아와

클라이언트의 로비 UI에 반영하여 사용할 수 있도록 설계한다

작업하기 이전에 서버와 클라이언트가 공통적으로 사용하는 파일들을 통일한다

 

- 클라이언트 사이드

1) OnServerStatusRequestHandler 클래스

 

OnServerStatusRequestHandler 클래스서버로부터 전달된 서버 정보가 담긴 패킷을 핸들링하는 클래스이다

Action 멤버변수를 사용하여 서버 정보가 전달되면 필요한 콜백 함수를 호출하도록 구성하였다

Handle 함수에서는 로비 씬에서만 동작하도록 구성하여 서버 정보가 전달되면 Action 멤버변수를 Invoke한다

 

2) UI_PlayerRow 클래스

 

상위 점수를 가진 플레이어의 정보를 담은 하나의 행의 UI 클래스를 추가한다

해당 클래스는 간단한 정보를 보여주므로 MonoBehavior를 상속받아 구현한다

멤버변수의 구성은 위와 같다

  • 해당 플레이어의 접속 여부를 알려주는 하위 UI
  • 해당 플레이어의 이름 + 점수를 알려주는 하위 UI

 

 

Init 함수는 위와 같이 구성하였다

인자로 PlayersNetDto를 받아 UI를 구성하는 하위 UI들을 설정한다

 

3) UI_Lobby 클래스

 

로비의 UI 클래스에 위와 같이 3개의 멤버변수를 추가한다

  • 상위 점수를 지닌 플레이어들의 행의 UI를 감싸는 그룹 UI
  • 접속중인 전체 플레이어들을 보여주는 UI
  • 인스턴스로 생성할 상위 플레이어들의 행 UI

 

 

Start 함수에 위와 같이 로직을 추가한다

그룹 UI 멤버변수접속중인 플레이어들의 수를 보여주는 UI 멤버변수를 설정하고

OnServerStatusRequestHandlerAction 멤버변수에 Refresh 콜백함수를 연결한다

 

 

OnDestroy 함수를 추가하고 Action 멤버변수에 연결한 콜백함수를 연결해제한다

 

 

Refresh 함수서버 정보가 담겨있는 Net_OnServerStatus 패킷을 수신받게 되면 동작한다

함수의 로직은 다음과 같다

  • 그룹 UI자식 오브젝트들을 즉시 제거
  • 접속중인 전체 플레이어들을 보여주는 UI를 설정
  • 서버로부터 전달받은 상위 점수를 지닌 플레이어들의 수만큼 그룹 UI에 행 UI생성 + Init 함수 호출

 

- 최종 실행 결과

 

728x90
반응형