- 개요
높은 점수를 갖고 있는 플레이어들의 정보와 접속중인 플레이어들의 정보를 서버로부터 받아와
클라이언트의 로비 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 멤버변수를 설정하고
OnServerStatusRequestHandler의 Action 멤버변수에 Refresh 콜백함수를 연결한다

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

Refresh 함수는 서버 정보가 담겨있는 Net_OnServerStatus 패킷을 수신받게 되면 동작한다
함수의 로직은 다음과 같다
- 그룹 UI의 자식 오브젝트들을 즉시 제거
- 접속중인 전체 플레이어들을 보여주는 UI를 설정
- 서버로부터 전달받은 상위 점수를 지닌 플레이어들의 수만큼 그룹 UI에 행 UI를 생성 + Init 함수 호출
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > 데디케이트 기반 모바일 게임' 카테고리의 다른 글
| 로비 구현 - 4) 다른 상대 탐색 기초 설정 (0) | 2025.12.17 |
|---|---|
| 로비 구현 - 3) ParrelSync 패키지의 사용 + 플레이어간의 퇴장 동기화 (0) | 2025.12.16 |
| 로비 구현 - 1) 서버상태 동기화 (0) | 2025.12.15 |
| 사용자 인증 - 최종) 클라이언트의 패킷 핸들링 (0) | 2025.12.02 |
| 사용자 인증 - 2) 로그인한 사용자 핸들링 (0) | 2025.12.02 |