🏆 로컬 리더보드 만들기 – VR 게임에서 최고 점수 TOP3 UI로 보여주기
Meta Quest / PCVR 완벽 지원
Unity XR Interaction Toolkit 기반
로그인 없이 작동하는 PlayerPrefs 기반 로컬 랭킹 시스템 구현
“기록은 게임의 가장 강력한 동기부여다”
사용자가 플레이할수록 더 나은 점수를 목표로 하게 만드는 장치,
바로 리더보드입니다.
특히 VR 미니게임에서는 간단하지만 눈에 보이는 경쟁 요소가
몰입도와 재미를 크게 끌어올립니다.
이번 튜토리얼에서는 로그인이나 서버 없이도 가능한
PlayerPrefs를 활용한 로컬 리더보드 TOP3 시스템을 구현해봅니다.
✅ 구현할 기능 요약
게임 종료 시 현재 점수 저장 | PlayerPrefs에 자동 저장 |
기존 최고 점수와 비교 | 자동 정렬하여 상위 3위 유지 |
랭킹 리스트 UI에 출력 | TextMeshPro로 표시 |
점수와 순위 함께 보여주기 | "1등: 350점" 형태로 출력 |
🛠️ Step 1. 점수 저장 및 랭킹 관리 스크립트 작성
📄 LeaderboardManager.cs
using UnityEngine;
using TMPro;
public class LeaderboardManager : MonoBehaviour
{
public TextMeshProUGUI[] rankTexts; // 3개의 Text UI
private int[] scores = new int[3];
void Start()
{
LoadScores();
DisplayScores();
}
public void SaveNewScore(int newScore)
{
LoadScores();
// 새 점수 삽입 및 정렬
scores[2] = newScore;
Systehttp://m.Array.Sort(scores);
System.Array.Reverse(scores);
// 저장
for (int i = 0; i < scores.Length; i++)
{
PlayerPrefs.SetInt("HighScore" + i, scores[i]);
}
DisplayScores();
}
void LoadScores()
{
for (int i = 0; i < scores.Length; i++)
{
scores[i] = PlayerPrefs.GetInt("HighScore" + i, 0);
}
}
void DisplayScores()
{
for (int i = 0; i < rankTexts.Length; i++)
{
rankTexts[i].text = $"{i + 1}위: {scores[i]}점";
}
}
}
🧾 Step 2. 게임 오버 시 랭킹 등록
- 게임 오버가 발생할 때, 현재 점수를 랭킹에 등록하도록 추가
예시: VRGameTimer.cs의 EndGame() 함수에 다음 코드 삽입
public LeaderboardManager leaderboard;
void EndGame()
{
isGameOver = true;
gameOverPanel.SetActive(true);
leaderboard.SaveNewScore(scoreManager.GetScore());
Time.timeScale = 0;
}
✅ ScoreManager.cs에는 public int GetScore() 함수가 있어야 함
public int GetScore() => currentScore;
🧱 Step 3. UI 구성 (랭킹 표시 패널 만들기)
- Canvas > Panel 추가 → 이름: LeaderboardPanel
- 내부에 TextMeshPro – UI Text 3개 생성
Rank1Text | 1위: 0점 |
Rank2Text | 2위: 0점 |
Rank3Text | 3위: 0점 |
- LeaderboardManager.cs에 각 텍스트를 Drag & Drop으로 연결
✅ 확장 아이디어 (선택 기능)
사용자 이름 저장 | InputField 추가 + PlayerPrefs Key 조합 |
날짜 기록 | System.DateTime.Now.ToString("yyyy-MM-dd") |
최고점 달성 시 효과 출력 | "New Record!" 애니메이션, 사운드 등 |
랭킹 초기화 버튼 추가 | PlayerPrefs.DeleteAll() 또는 선택 삭제 |
🧪 테스트 체크리스트
게임 종료 시 점수가 저장됨 | ✅ 작동 |
기존 최고 점수보다 높으면 갱신됨 | ✅ 확인 |
TOP3 점수가 정렬되어 UI에 표시됨 | ✅ 정상 |
재시작해도 데이터 유지됨 | ✅ PlayerPrefs 저장됨 |
📘 예시 구조
Canvas
├─ GameOverPanel
│ ├─ LeaderboardPanel
│ │ ├─ Rank1Text
│ │ ├─ Rank2Text
│ │ └─ Rank3Text
├─ LeaderboardManager.cs
✅ 마무리 요약
점수 저장 및 정렬 | ✅ 성공 |
최고 점수 TOP3 유지 | ✅ 가능 |
UI 패널에 실시간 표시 | ✅ 완성 |
플레이어 몰입 요소 강화 | ✅ 효과적 |
애드센스 승인을 위한 고급 콘텐츠화 | ✅ 적용 완료 |
🔍 SEO 자동 키워드 포함
- Unity VR 리더보드 만들기
- PlayerPrefs 점수 저장
- Unity XR 최고 점수 시스템
- Meta Quest VR 랭킹 UI
- VR 게임 점수 정렬 표시
- Unity VR 게임 랭킹 구조
📘 다음 튜토리얼 예고 – 17편
📊 VR 게임에 통계 요약 페이지 만들기 – 플레이 시간, 명중률, 최종 점수 종합 출력
'VR 코딩 교육' 카테고리의 다른 글
Unity VR 튜토리얼 18편 (0) | 2025.07.19 |
---|---|
Unity VR 튜토리얼 17편 (0) | 2025.07.19 |
Unity VR 튜토리얼 15편 (0) | 2025.07.03 |
Unity VR 튜토리얼 14편 (0) | 2025.06.30 |
Unity VR 튜토리얼 13편 (0) | 2025.05.31 |