Game/Unity

[Unity] VR 시뮬레이터 만들기

nowkoes 2024. 2. 4. 00:00

VR 시뮬레이터

개요

 VR 개발을 하다 보면, 현재 내 상황에 대한 디버깅이 필요한 순간이 있을 것이다. 예를 들어, 운전을 하는 VR을 개발 중이면 현재 개발 단계에서 어느 부분이 모자란지에 대한 정보가 필요한데, 이를 확인하기 위해 매번 빌드하는 과정이 상당히 번거롭다. 따라서 간단한 시뮬레이터를 구현하여 이를 해결해 보는 시간을 가지도록 해보겠다.


본문

전처리 지시문

출처: 유니티 공식 문서

 

 유니티에서 코드를 실제 빌드 환경과 시뮬레이션 환경을 나누어 처리하고자 할 때 주로 전처리 지시문(Preprocessor Directives)을 사용한다. 전처리 지시문을 활용하면 특정 조건에 따라 코드의 일부를 컴파일러에서 제외하거나 포함시킬 수 있다. 이를 통해 실제 빌드와 에디터 내에서의 시뮬레이션을 구분할 수 있다.

 

 

 유니티에서 UNITY_EDITOR라는 전처리 지시문은 에디터 환경에서 실행되는지 확인할 때 사용한다. 예를 들어, 앞선 헤드 트레킹을 다룬 게시글에서 큐브가 움직이는 것을 실제 빌드 환경에서는 상호작용 키를 눌렀을 때로, 에디터 단계에서는 z키를 눌렀을 때로 나누고 싶으면 다음과 같이 코드를 작성할 수 있다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveCube : MonoBehaviour
{
    public float moveSpeed = 5.0f;
    public Vector3 movement = new Vector3(0, 0, -1);

    void Update()
    {
#if UNITY_EDITOR
        if (Input.GetKeyDown(KeyCode.Z))
        {
            SimulateMovement();
            Debug.Log("UNITY_EDITOR");
        }
#else
        if (Input.GetButtonDown("Fire1"))
        {
            PerformMovement();
        }
#endif
    }

    void SimulateMovement()
    {
        transform.Translate(movement * moveSpeed * Time.deltaTime);
    }

    void PerformMovement()
    {
        transform.Translate(movement * moveSpeed * Time.deltaTime);
    }
}

 

 유니티 에디터에서 개발하는 단계에서는 'Z' 키를 누를 때 오브젝트가 움직이도록 구현할 수 있으며, 실제 게임 빌드에서는 사용자의 상호작용 키('Fire1')를 누를 때 오브젝트가 움직이도록 설정하였다. 이 원칙을 활용해 'GameManager' 오브젝트에 현재 실행 환경을 나타내는 플래그 변수를 생성하고, 이를 프로그램 전반에서 활용하여 실행 환경에 맞는 다양한 로직을 구현할 수 있다는 것도 체크해 두면 좋겠다. 이 방식은 개발과 실제 게임 환경을 효율적으로 구분하고, 각 환경에 최적화된 경험을 제공하는 데 도움이 된다.

반응형