[Unity] 전처리기 플래그 (Preprocessor Flag)를 이용한 조건 컴파일 코드 작성하기

2022. 3. 8. 18:16Game Development/Unity

 

 

필요한 이유

 

유니티에서 조건별 컴파일을 할 수 있도록 코드를 작성할 수 있다.

유용하게 사용하는 대표적인 예시 중 하나로, 디버깅을 끝낸 후에 디버그 코드를 지우고, 다시 개발하다가 또 똑같은 오류를 접하게 되면 지웠던 내용들을 다시 작성해야 하는 번거로움을 겪지 않아도 된다는 게 있다.

 

이것은 전역 선언(Global define)을 통해 해결할 수 있다. 전역 선언이란, 코드를 조건별로 컴파일하거나 특정 단락을 제외하는 것을 활성화 또는 비활성화할 수 있도록 해주는 특별한 전처리기 플래그(Preprocessor flag)를 말한다.

 

플래그를 true로 설정하면 유니티는 자동으로 한 버전의 코드를 컴파일, false로 설정하면 또 다른 버전을 컴파일한다.

이렇게 하나는 디버그용, 또 다른 하나는 배포용과 같이 두 개 혹은 다양한 버전의 코드를 하나의 소스 파일로 관리가 가능하다.

 

 

사용 방법

 

다음과 같이 예제 코드를 작성하고, 빈 오브젝트에 붙여줬다.

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

public class Test : MonoBehaviour
{
    void Start()
    {
        #if SHOW_DEBUG_MESSAGES
             Debug.Log("디버그용");
             return;
        #endif
        
        Debug.Log("배포용");
    }
}

 

그리고, 유니티 에디터에서

Edit → Project Settings → Player → Script Compilation → Scripting Define Symbols 로 찾아간다.

작성한 전처리기 플래그의 이름을 적고, 엔터(Enter) 키 또는 Apply 버튼을 눌러준다.

 

사용할 전처리기의 이름 작성

 

이렇게 되면, 전처리기 플래그 안에 있는 내용들이 실행이 될 것이다.

 

전역 선언을 했을 경우

 

이런 전처리기 조건절은 일반적인 if문과 다르게 실행 시점이 아닌 컴파일 시점에 수행된다.

컴파일 시점에 유니티는 SHOW_DEBUG_MESSAGES가 기술되어 있는지 혹은 활성화되어 있는지를 판단하는 것이다.

 

만약 전처리기 조건절 단락을 더 이상 실행하고 싶지 않을 경우에는 전역 선언해놓은 것을 삭제한다.

좀 더 편하게 활성화/비활성화 할려면 안 쓰는 표시의 글자 하나 정도를 추가하는 것도 괜찮다.

 

전처리기 조건절을 실행하고 싶지 않을 경우

 

그러고 실행 해보면 다음과 같이 전처리기 조건절은 실행되지 않는 것을 볼 수 있다.

 

 

 

 

  • 이 글은 <유니티 C# 스크립팅 마스터하기> 책을 바탕으로 공부한 글입니다.
728x90
반응형