🎓 블로그 소개: 이 블로그는 가상현실(VR)과 인공지능(AI)을 활용한 실습형 교육 콘텐츠를 제공합니다. 모든 콘텐츠는 직접 제작되며, 초보자도 쉽게 따라할 수 있도록 구성되어 있습니다.
본문 바로가기
VR 코딩 교육

Unity VR 튜토리얼 11편

by goodworld-info 2025. 5. 25.

⏰ VR 타이머 + 게임 오버 UI 만들기 – 제한 시간 게임 구조 구현

XR Interaction Toolkit 기반
Meta Quest / PCVR에서 적용 가능
VR 미니게임에 필수 기능인 타이머, 종료 조건, UI 패널을 직접 만드는 실습 가이드

VR(가상현실)

게임에는 반드시 ‘끝’이 있어야 한다

아무리 몰입감 넘치는 VR 게임이라도,
시간 제한이나 종료 조건이 없다면 지루함이 생기기 마련입니다.
이번 튜토리얼에서는 VR 미니게임에 시간 제한을 주고,
게임이 끝나면 점수를 보여주는 UI 패널을 띄우는 구조를 만들어봅니다.

이 기능을 통해 사용자에게 목표를 주고,

플레이어가 게임을 완주했다는 만족감을 느낄 수 있습니다.


✅ 목표 기능 요약

  • VR 게임에 60초 타이머 구현
  • 시간이 끝나면 자동으로 게임 종료 처리
  • UI에 Game Over 패널 + 점수 표시
  • 다시 시작할 수 있는 버튼 포함

🛠️ 개발 환경 사전 조건

항목설정
Unity 버전 2021.3 이상
XR Toolkit XR Interaction Toolkit 설치 완료
UI 시스템 TextMeshPro 사용 (점수판 포함 상태)
이전 튜토리얼 연동 여부 ✅ 발사체, 타겟, 점수판 구조가 준비되어야 함
 

⏰ Step 1. 타이머 UI 구성하기

  1. Hierarchy > UI > Text - TextMeshPro 추가
  2. 이름: TimerText
  3. 내용: "남은 시간: 60초"
  4. 위치: 상단 중앙 ((0, 1.8, 2) 정도)
  5. Canvas → World Space / 크기 적절히 설정

📄 Step 2. 타이머 스크립트 작성

📄 VRGameTimer.cs 생성:

using UnityEngine;
using TMPro;

public class VRGameTimer : MonoBehaviour
{
    public float timeLimit = 60f;
    private float remainingTime;
    public TextMeshProUGUI timerText;
    public GameObject gameOverPanel;

    private bool isGameOver = false;

    void Start()
    {
        remainingTime = timeLimit;
        gameOverPanel.SetActive(false);
    }

    void Update()
    {
        if (isGameOver) return;

        remainingTime -= Time.deltaTime;

        timerText.text = "남은 시간: " + Mathf.CeilToInt(remainingTime) + "초";

        if (remainingTime <= 0)
        {
            EndGame();
        }
    }

    void EndGame()
    {
        isGameOver = true;
        gameOverPanel.SetActive(true);
        Time.timeScale = 0; // 게임 일시정지
    }
}

 


🧾 Step 3. Game Over UI 패널 만들기

  1. UI > Panel 추가 → 이름: GameOverPanel
  2. Canvas 하위에 배치
  3. 기본 배경 색 → 어두운 반투명 (#000000 80%)
  4. 하위 요소 추가:
UI 요소내용 예시
Text (TMP) "Game Over"
Text (TMP) "최종 점수: 100점"
Button "다시 시작하기"
 

✅ 패널은 처음에 비활성화 시켜두세요 (SetActive(false))


🔁 Step 4. 다시 시작 버튼 기능 만들기

📄 GameRestart.cs 스크립트:

  • 버튼 OnClick에 이 스크립트를 연결하고
  • RestartGame() 함수 선택

🧪 Step 5. 전체 테스트 체크리스트

항목결과
게임 시작 시 60초 타이머 작동 ✅ 정상
시간 0초 되면 게임 종료 패널 표시 ✅ 확인
점수 유지됨 ✅ 가능
다시 시작 버튼 작동 ✅ Scene Reload 정상 작동
 

💡 확장 아이디어

확장 기능설명
시간 연장 아이템 특정 타겟 맞추면 +10초 추가
게임 난이도 조절 시간이 줄어들수록 타겟 속도 증가
종료 후 랭킹 저장 PlayerPrefs 또는 클라우드 연동
“다음 단계”로 넘어가는 UI 추가 씬 전환 or 스테이지 진행
 

📚 구조 예시


✅ 요약

구현 기능완료 여부
VR 타이머 UI ✅ 완성
시간 제한 기능 ✅ 작동
게임 종료 시 패널 표시 ✅ 성공
다시 시작 버튼 ✅ 정상 동작
사용자 몰입도 및 게임 루프 ✅ 대폭 향상

📘 다음 튜토리얼 예고 – 12편

👉 VR 게임 점수 저장하기 & 간단한 랭킹 시스템 구성

  • 점수 PlayerPrefs 저장
  • UI에 지난 최고 기록 표시
  • 로그인 없이 로컬 랭킹 만들기