2022. 3. 8. 18:16ㆍGame 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# 스크립팅 마스터하기> 책을 바탕으로 공부한 글입니다.
'Game Development > Unity' 카테고리의 다른 글
[Unity] 이벤트 주도적 프로그래밍 (Event Driven Programming) (6) | 2022.04.03 |
---|---|
[Unity] 시각적 디버깅에 용이한 기즈모(Gizmos) (0) | 2022.03.11 |
[Unity] SendMessage와 BroadcastMessage (5) | 2022.02.22 |
[Unity] "Universal RP Light 2D"를 스크립트 제어하기 (0) | 2022.02.20 |
[Unity] 일방향 충돌, 측면 마찰 및 반발력을 설정할 수 있는 Platform Effector 2D (0) | 2022.02.19 |