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

로비 구현 - 4) 다른 상대 탐색 기초 설정

monstro 2025. 12. 17. 20:17
728x90
반응형

- 개요

로비에 입장해있는 동안 버튼을 눌러 다른 상대와 매칭하는 설정을 추가한다

매칭을 기다리는 동안 취소 버튼을 눌러 매칭을 취소하는 설정도 추가한다

추가하는 설정에 맞춰 새롭게 생성하는 패킷들은 다음과 같다

  • FindOpponentRequest 패킷 : 클라이언트에서 서버로 전달하여 다른 상대를 매칭할 것을 요청
  • CancleFindOpponentRequest 패킷 : 클라이언트에서 서버로 전달하여 매칭을 취소할 것을 요청
  • OnFindOpponent 패킷 : 서버에서 클라이언트로 전달하여 매칭을 진행

 

- 서버 + 클라이언트 공용

1) PacketType 클래스

 

PacketType 클래스에 새로운 설정에 맞춰 패킷 타입을 추가한다

각각 매칭 요청 + 매칭 취소 + 매칭을 의미하는 패킷으로서 사용한다

 

2) Net_FindOpponentRequest 클래스

 

Net_FindOpponentRequest 패킷 클래스를 위와 같이 생성한다

해당 클래스는 클라이언트에서 서버로 전송하여 다른 플레이어와의 매칭을 요청하는 용도로 사용한다

 

2) Net_CancleFindOpponentRequest 클래스

 

Net_CancleFindOpponentRequest 패킷 클래스를 위와 같이 생성한다

해당 클래스는 클라이언트에서 서버로 전송하여 진행중인 매칭을 취소하는 용도로 사용한다

 

- 서버 사이드

1) FindOpponentRequestHandler 클래스

 

클라이언트로부터 수신된 Net_FindOpponentRequest 패킷을 핸들링하는 핸들러 클래스를 생성한다

Handle 함수는 위와 같이 임시적으로 구성하여 패킷의 수신 여부를 확인한다

 

2) CancleFindOpponentRequestHandler 클래스

 

클라이언트로부터 수신된 Net_CancleFindOpponentRequest 패킷을 핸들링하는 핸들러 클래스를 생성한다

Handle 함수도 마찬가지로 임시적으로 구성하여 패킷의 수신 여부를 확인한다

 

- 클라이언트 사이드

1) UI_Lobby 클래스

 

위와 같이 3개의 멤버변수를 추가한다

각각 다음과 같다

  • 대전 상대를 매칭하는 버튼 UI
  • 매칭 상태동안 활성화되는 부모 UI
    • 부모 UI의 자식 UI로서 매칭을 취소하는 버튼 UI

 

 

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

  • 매칭 상태동안 활성화되는 UI를 설정 + 매칭 취소 버튼onClick 이벤트에 CancelFindOpponent 함수 연결
  • 대전 상대를 매칭하는 버튼의 onClick 이벤트에 FindOpponent 함수 연결

 

 

FindOpponent 함수의 로직은 위와 같다

LeanTweener의 애니메이션을 재설정하고 매칭 상태동안 활성화되는 UI를 작동시킨다

이후 Net_FindOpponentRequest 패킷을 생성하고 서버로 전송한다

 

 

CancelFindOpponent 함수의 로직은 위와 같다 

매칭 상태동안 활성화되는 UI를 비활성화하고 Net_CancleFindOpponentRequest 패킷을 생성하고 서버로 전송한다

 

- 최종 실행 결과

 

728x90
반응형