- 개요
현재 Room에서 진행중인 게임의 플레이어마다 다른 플레이어를 처치하여
획득한 점수를 표현하는 점수판 UI를 추가한다
- 애셋 작업
1) InputActions 애셋

점수판 UI를 열었다 닫는 입력을 처리하는 OpenScoreMenu 액션을 추가한다
Button 타입으로 설정하여 연결된 K 키를 누르면 해당 액션을 수행한다
- 스크립트 작업
1) UI_KillScore 클래스

플레이어별 점수를 보여주는 하나의 행으로 사용하는 UI_KillScore 클래스를 추가한다
IComparable 인터페이스를 상속하여 객체간의 순서를 정렬한다
함수의 구성은 다음과 같다
- 생성자 : 플레이어의 이름 + 플레이어의 점수를 설정
- CompareTo 함수 : 플레이어의 점수를 비교하여 UI_KillScore 객체들을 순서대로 정렬
2) UI_KillCountPanel 클래스

점수판 UI에서 사용하는 UI_KillCountPanel 클래스를 추가한다
멤버변수의 구성은 위와 같다
- highestKills 멤버변수 : UI_KillScore 객체들을 저장하는 리스트
- playerNames 멤버변수 : 게임에 참여중인 플레이어의 이름
- killAmounts 멤버변수 : 참여중인 플레이어별 점수
- killCountPanel 멤버변수 : UI_KillScore 객체들을 하나로 모아놓은 자식 오브젝트
- namesObject 멤버변수 : 게임에 참여중인 플레이어의 이름을 가져올 UI 오브젝트

Awake 함수와 Start 함수를 위와 같이 구성한다
- Awake 함수 : UIManager에 점수판 UI를 등록
- Start 함수 : 등록된 플레이어의 이름 UI를 가져오고 자식 오브젝트를 비활성화

UpdateScoreBoard 함수를 위와 같이 구성하여 점수판 UI를 갱신한다
- 플레이어의 이름 UI를 가져와 플레이어의 이름을 순회 + highestKills 변수에 객체를 생성하여 추가
- highestKills 멤버변수를 내림차순 정렬
- 정렬된 결과를 playerNames 변수와 killAmounts 변수에 적용
3) UIManager 클래스


UIManager 클래스에 UI_KillCountPanel 관련 코드를 추가하여 클라이언트마다 점수판 UI를 등록한다
4) PlayerOpenScoreMenu 클래스

플레이어가 K 키를 누르면 액션에 따라 필요한 동작을 처리하는 PlayerOpenScoreMenu 클래스를 생성한다
멤버변수의 구성은 다음과 같다
- killCountOn 멤버변수 : 점수판 UI가 열려있는지 여부
- killCountPanel 멤버변수 : 점수판 UI
멤버함수는 다음과 같이 구성하였다
- Start 함수 : UIManager에 등록된 점수판 UI를 가져와 KillCountPanel 변수를 설정
- HandleOpenScoreMenu 함수 : K 키를 누르면 호출되어 점수판 UI를 갱신
5) InputReader 클래스

OpenScoreMenu 액션과 관련된 멤버변수를 추가한다

Awake 함수 - OnEnable 함수 - OnDisable 함수에 위와 같이 로직을 추가하여
Action을 설정하고 Action이 실행되면 호출할 콜백함수를 설정한다

OpenScoreMenu 함수는 위와 같이 구성하여 OpenScoreMenu 액션에 바인드된 콜백함수를 실행한다
6) PlayerController 클래스

PlayerOpenScoreMenu 클래스와 관련된 멤버변수를 추가하고 Awake 함수에서 값을 설정한다

OnEnable 함수와 OnDisable 함수에 로직을 추가하여
OpenScoreMenu 액션이 실행되면서 호출할 콜백함수를 설정한다
- 최종 실행 결과


'유니티 엔진 - 게임 프로젝트 > Photon을 사용한 멀티 플레이어 게임' 카테고리의 다른 글
| 게임플레이 - 1) 사격 FX 효과 추가 (0) | 2026.04.28 |
|---|---|
| UI 설정 - 최종) Room 퇴장 구현과 Lobby 퇴장 개선 (0) | 2026.04.22 |
| UI 설정 - 개선) GameObject의 Tag 참조 방식 제거 (0) | 2026.04.20 |
| UI 설정 - 5) 기존의 코드 수정 + 타이머와 장착한 무기 표현 (0) | 2026.03.31 |
| UI 설정 - 4) 접속한 플레이어의 이름 표시 (0) | 2026.03.31 |