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

Unity VR 튜토리얼 18편

by goodworld-info 2025. 7. 19.

가상현실(VR)

🔄 VR 게임 재시작 & 홈 화면 UI 구성하기 – XR 컨트롤러 버튼 클릭 시스템

Meta Quest / PCVR 대응
Unity XR Interaction Toolkit 기반
게임 종료 후 유저가 직접 다시 시작하거나 메인으로 이동하는 UI를 구성합니다.


“게임의 마지막 인상도 사용자 경험이다”

게임은 끝났지만, 유저 경험은 거기서 끝나지 않습니다.
다시 도전하고 싶게 만들 것인지,
홈 화면으로 돌아가게 할 것인지
게임 종료 후 제공되는 UI 선택지에 달려 있습니다.

이번 튜토리얼에서는

  • VR 컨트롤러로 조작 가능한
  • "다시 시작" 버튼
  • "메인 메뉴로 이동" 버튼
    을 갖춘 완성형 종료 UI 패널을 만들고,
    씬 전환까지 구현해봅니다.

✅ 구현할 기능 요약

기능설명
게임 종료 후 UI 패널 표시 GameOverPanel 또는 StatsPanel에 포함
XR 컨트롤러로 버튼 클릭 가능 XR Ray Interactor 기반
다시 시작 시 현재 씬 재시작 SceneManager.LoadScene()
홈으로 이동 시 다른 씬 로딩 메인 메뉴 씬으로 전환
 

🛠️ Step 1. UI 패널에 버튼 추가

  1. Canvas > Panel 생성 → 이름: GameOverPanel (또는 StatsPanel)
  2. 내부에 버튼 2개 추가:
    • UI > Button - TextMeshPro
    • 버튼 이름: RestartButton, HomeButton
  3. 텍스트 설정:
    • RestartButton → "다시 시작하기"
    • HomeButton → "메인 메뉴로"

🧷 Step 2. XR 컨트롤러 클릭 가능하게 만들기

  1. LeftHand Controller 또는 RightHand Controller 선택
  2. XR Ray Interactor 추가 (또는 이미 있다면 유지)
  3. Line Visual 컴포넌트 추가 → 클릭 가능한 레이저 선
  4. XR Interaction Manager가 반드시 존재해야 함
  5. Event System 존재 확인:
    • Input System UI Input Module 설정 완료 상태여야 함

✅ 이제 컨트롤러로 버튼을 가리면 → 트리거 누르면 클릭 가능!


📄 Step 3. 버튼 스크립트 작성

📄 VRGameUIManager.cs

using UnityEngine;
using UnityEngine.SceneManagement;

public class VRGameUIManager : MonoBehaviour
{
    public void RestartGame()
    {
        Time.timeScale = 1;
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);
    }

    public void GoToMainMenu()
    {
        Time.timeScale = 1;
        SceneManager.LoadScene("MainMenu");
    }
}
✅ 메인 메뉴 씬 이름은 "MainMenu"로 저장되어 있어야 함
→ 빌드 세팅 (File > Build Settings)에서 씬 추가 필수
 

🔗 Step 4. 버튼에 함수 연결하기

  1. RestartButton 선택
  2. Button > On Click()
      • 버튼 클릭
    • VRGameUIManager 오브젝트 Drag
    • 함수 선택: RestartGame()
  3. HomeButton도 동일한 방식으로
    • 함수 선택: GoToMainMenu()

📘 선택: 메인 메뉴 씬 구성 (간단하게)

  • 새 씬 생성 → MainMenu.unity로 저장
  • UI 패널 구성:
    • 타이틀 (TextMeshPro)
    • 시작 버튼 ("게임 시작하기" → SceneManager.LoadScene("GameScene"))
    • 종료 버튼 (Application.Quit())

🧪 테스트 체크리스트

항목확인 여부
게임 종료 시 UI 패널이 뜬다
버튼에 XR 레이저가 반응한다
트리거 클릭 시 함수가 작동한다
재시작 버튼 누르면 게임이 초기화됨
홈으로 이동 시 MainMenu로 전환됨
 

💡 확장 팁

기능설명
버튼에 사운드 추가 AudioSource.PlayOneShot()
선택 효과 애니메이션 Animator 또는 DOTween 사용
버튼 누른 후 페이드아웃 연출 CanvasGroup 사용 fade-out
UI 패널에 "게임 클리어!" 문구 추가 성공 여부에 따라 텍스트 다르게
 

📘 구조 예시

Canvas
 └─ GameOverPanel
     ├─ RestartButton
     ├─ HomeButton
     └─ VRGameUIManager.cs

XR Origin
 ├─ LeftHand Controller (XR Ray Interactor)
 └─ EventSystem (Input System UI Module)


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

🎨 VR 게임 UI 디자인 개선하기 – 시각적으로 예쁜 HUD와 애니메이션 적용하기

'VR 코딩 교육' 카테고리의 다른 글

Unity VR 튜토리얼 17편  (0) 2025.07.19
Unity VR 튜토리얼 16편  (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