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

인게임 구현 - 1) 클라이언트의 GameManager 클래스

monstro 2025. 12. 29. 14:02
728x90
반응형

- 개요

플레이어가 게임에 접속하고 접속한 게임을 클라이언트에서도 접근하여 작업하기 위해

GamaManager 클래스와 필요한 다른 클래스들을 생성한다

 

- 클라이언트 사이드

1) GameManager 클래스

내부 클래스 Game

 

진행중인 게임을 의미하는 Game 클래스를 내부에 생성한다

Game 클래스의 프로퍼티의 구성은 다음과 같다

  • Id 프로퍼티 : 진행중인 게임의 아이디
  • XUserName 프로퍼티 : 진행중인 게임의 첫 번째 플레이어 이름
  • YUserName 프로퍼티 : 진행중인 게임의 두 번째 플레이어 이름
  • CurrentUser 프로퍼티 : 진행중인 게임의 현재 플레이어 이름
  • StartTime 프로퍼티 : 진행중인 게임의 시작 시간
  • EndTime 프로퍼티 : 진행중인 게임의 종료 시간

 

GameManager 클래스의 프로퍼티

 

GameManager 클래스의 멤버변수는 위와 같다

  • _activeGame 멤버변수 + ActiveGame 프로퍼티 : 현재 진행중인 게임
  • _instance 멤버변수 + Instance 프로퍼티 : 싱글톤으로 동작할 GameManager의 인스턴스
  • InputEnabled 프로퍼티 : 진행중인 게임에서 입력을 수행할 수 있는지 여부

 

 

Awake 함수를 추가하여 싱글톤 인스턴스를 설정하고 씬이 전환되도 파괴되지 않도록 설정한다

 

 

RegisterGame 함수를 추가하여 위와 같이 로직을 구성한다

새로운 Game 인스턴스를 생성하고 _activeGame 멤버변수에 값을 설정한다

이후 InputEnabled 프로퍼티를 True로 설정하여 입력을 수행할 수 있도록 설정한다

 

2) OnStartGameHandler 클래스

 

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

서버로부터 Net_OnStartGame 패킷을 수신받은 후

GameManager의 RegisterGame 함수에 패킷의 정보를 인자로 넘겨주어 호출한다

 

3) UI_Game 클래스

 

인게임 화면을 구성하는 UI_Game 클래스를 생성한다

내부 열거형멤버변수를 위와 같이 추가한다

  • GameObjects_Btn 열거형 
    • Btn_Logout : 로그아웃을 수행하는 버튼
  • GameObjects_Text 열거형
    • Txt_XScore : 첫 번째 플레이어점수 텍스트
    • Txt_XUserName : 첫 번째 플레이어이름 텍스트
    • Txt_YScore : 두 번째 플레이어점수 텍스트
    • Txt_YUserName : 두 번째 플레이어이름 텍스트
    • Txt_Timer : 턴을 진행하기 위해 남은 시간의 텍스트

 

4개의 멤버변수 각각 첫 번째 플레이어의 점수 + 이름 / 두 번째 플레이어의 점수 + 이름을 설정하기 위해 사용한다

 

 

Awake 함수를 위와 같이 구성한다

멤버로 갖고 있는 열거형의 구성요소들GameObject로 바인딩하고

4개의 멤버변수바인딩된 구성요소들로 설정한다

이후 InitHeader 멤버함수를 호출한다

 

 

InitHeader 함수의 로직은 위와 같이 구현하여 진행중인 게임플레이어들의 이름으로 텍스트를 설정한다

 

- 최종 실행 결과

728x90
반응형