Version: Unity 6.0 (6000.0)
언어 : 한국어
Unity의 조건부 컴파일
커스텀 스크립팅 심볼

Unity 스크립팅 심볼 레퍼런스

플랫폼 심볼

Unity는 저작 및 빌드 타겟 플랫폼을 기반으로 특정 심볼을 자동으로 정의합니다. 이는 다음과 같습니다.

Define 기능
UNITY_EDITOR 게임 코드에서 Unity 에디터 스크립트를 호출하는 스크립팅 심볼.
UNITY_EDITOR_WIN Windows에서의 에디터 코드용 스크립팅 심볼.
UNITY_EDITOR_OSX macOS에서의 에디터 코드용 스크립팅 심볼.
UNITY_EDITOR_LINUX Linux에서의 에디터 코드용 스크립팅 심볼.
UNITY_EMBEDDED_LINUX 포함된 Linux용 스크립팅 심볼.
UNITY_QNX QNX용 스크립팅 심볼.
UNITY_STANDALONE_OSX (Universal 아키텍처, PPC 아키텍처와 Intel 아키텍처를 포함한) macOS 전용 코드를 컴파일 또는 실행하기 위한 스크립팅 심볼.
UNITY_STANDALONE_WIN Windows 스탠드얼론 애플리케이션 전용 컴파일링/실행 코드용 스크립팅 심볼.
UNITY_STANDALONE_LINUX Linux 스탠드얼론 애플리케이션 전용 컴파일링/실행 코드용 스크립팅 심볼.
UNITY_STANDALONE 스탠드얼론 플랫폼(Mac OS X, Windows 또는 Linux) 전용 컴파일링/실행 코드용 스크립팅 심볼.
UNITY_SERVER 전용 서버(macOS, Windows 또는 Linux)의 컴파일링/실행 코드용 스크립팅 심볼.
UNITY_IOS iOS 플랫폼용 컴파일링/실행 코드용 스크립팅 심볼.
UNITY_ANDROID Android 플랫폼용 스크립팅 심볼.
UNITY_TVOS Apple TV 플랫폼용 스크립팅 심볼
UNITY_VISIONOS VisionOS 플랫폼용 스크립팅 심볼.
UNITY_WSA 유니버설 Windows 플랫폼용 스크립팅 심볼.
UNITY_WSA_10_0 유니버설 Windows 플랫폼용 스크립팅 심볼.
UNITY_WEBGL 웹용 스크립팅 심볼.
UNITY_ANALYTICS 게임 코드에서 Unity 애널리틱스 메서드를 호출하기 위한 스크립팅 심볼.
UNITY_ASSERTIONS 행사 컨트롤 프로세스를 위한 스크립팅 심볼
UNITY_64 64비트 플랫폼용 스크립팅 심볼 실제로는 모든 64비트 아키텍처에서 작동하지 않으며 특정 플랫폼의 다른 CPU 아키텍처가 동일한 컴파일된 어셈블리를 공유할 수 있으므로 이 방법을 사용해서는 안 됩니다. 아키텍처를 기반으로 하여 조건부로 코드를 실행하려면 IntPtr.Size를 확인하는 표준 if 문을 사용하십시오(32비트 프로세스에서는 4, 64비트 프로세스에서는 8). 예시는 지시문에 대한 대안을 참조하십시오.

Unity 에디터 버전 심볼

Unity는 현재 사용 중인 Unity 에디터 버전에 따라 특정 스크립팅 심볼을 자동으로 정의합니다.

버전 X.Y.Z 에 따라(예: 2019.4.14) Unity는 세 개의 글로벌 스크립팅 심볼을 다음과 같은 포맷으로 나타냅니다. UNITY_X, UNITY_X_Y, UNITY_X_Y_Z.

Unity 2019.4.14에서 나타나는 스크립팅 심볼 예시입니다.

Define 기능
UNITY_2019 모든 2019.Y.Z 릴리스에서 나타나는 Unity 2019의 릴리스 버전에 해당하는 스크립팅 심볼입니다.
UNITY_2019_4 모든 2019.4.Z 릴리스에서 나타나는 Unity 2019.4의 주요 버전에 해당하는 스크립팅 심볼입니다.
UNITY_2019_4_14 Unity 2019.4.14의 부 버전에 해당하는 스크립팅 심볼입니다.

코드 스니핏 섹션을 컴파일하거나 실행하는 데 필요한 Unity 최초 버전을 기반으로 코드를 선택적으로 컴파일할 수도 있습니다. 위와 동일한 버전 포맷(X.Y)에 따라 Unity는 이 목적으로 사용할 수 있는 UNITY_X_Y_OR_NEWER 포맷으로 하나의 전역 #define을 노출합니다.

기타 심볼

Unity에서 정의하는 기타 심볼은 다음과 같습니다.

Define 기능
CSHARP_7_3_OR_NEWER C# 7.3 이상 지원하는 스크립트를 빌드할 때의 정의입니다.
ENABLE_MONO Mono를 위한 스크립팅 백엔드 #define입니다.
ENABLE_IL2CPP IL2CPP를 위한 스크립팅 백엔드 #define입니다.
ENABLE_VR 타겟 빌드 플랫폼이 VR을 지원할 때의 정의입니다. 현재 VR이 활성화되어 있거나 VR을 지원하는 데 필요한 플러그인과 패키지가 설치되어 있음을 의미하지는 않습니다.
NET_2_0 Mono 및 IL2CPP에서 .NET 2.0 API 호환성 레벨에 스크립트를 빌드할 때의 정의입니다.
NET_2_0_SUBSET Mono와 IL2CPP에서 .NET 2.0 Subset API 호환성 레벨에 스크립트를 빌드할 때의 정의입니다.
NET_LEGACY Mono와 IL2CPP에서 .NET 2.0 또는 .NET 2.0 Subset API 호환성 레벨에 스크립트를 빌드할 때의 정의입니다.
NET_4_6 Mono 및 IL2CPP에서 .NET 4.x API 호환성 레벨에 스크립트를 빌드할 때의 정의입니다.
NET_STANDARD_2_0 Mono 및 IL2CPP에서 .NET 스탠다드 2.0 API 호환성 레벨에 스크립트를 빌드할 때의 정의입니다.
NET_STANDARD_2_1 Mono 및 IL2CPP에서 .NET 스탠다드 2.1 API 호환성 레벨에 스크립트를 빌드할 때의 정의입니다.
NET_STANDARD Mono 및 IL2CPP에서 .NET 스탠다드 2.1 API 호환성 레벨에 스크립트를 빌드할 때의 정의입니다.
NETSTANDARD2_1 Mono 및 IL2CPP에서 .NET 스탠다드 2.1 API 호환성 레벨에 스크립트를 빌드할 때의 정의입니다.
NETSTANDARD Mono 및 IL2CPP에서 .NET 스탠다드 2.1 API 호환성 레벨에 스크립트를 빌드할 때의 정의입니다.
ENABLE_WINMD_SUPPORT Windows 런타임 지원이 IL2CPP에서 활성화된 경우에 정의됩니다. 자세한 내용은 Windows 런타임 지원을 참조하십시오.
ENABLE_INPUT_SYSTEM 플레이어 설정에 입력 시스템 패키지가 활성화되었을 때 정의됩니다.
ENABLE_LEGACY_INPUT_MANAGER 플레이어 설정에 레거시 입력 관리자가 활성화되었을 때 정의됩니다.
DEVELOPMENT_BUILD 스크립트가 Development Build 옵션이 활성화될 때 빌드된 플레이어에서 실행될 때 정의됩니다.

이 정의는 빌드 시 개발 빌드 옵션이 활성화되었는지 여부만 반영합니다. 스크립트가 개발 빌드 모드에서 실행 중인지 확인하려면 Debug.isDebugBuild를 사용하십시오. __DEVELOPMENT\_BUILD__ 는 현재 개발 빌드에서 실행 중인지 확인하기에 충분하지 않습니다. 대부분의 플랫폼에서는 프로젝트를 다시 빌드하지 않고도 개발 빌드와 비개발 빌드를 전환할 수 있습니다. 하지만 일부 플랫폼에서는 Unity가 에디터에서 개발 빌드와 비개발 빌드 간 전환을 지원하지 않으며, 빌드가 완료된 후에 전환해야 합니다. 예를 들어 Windows에서는 Visual Studio에서 개발 빌드 또는 비개발 빌드를 원하는지 선택하기 위해 Create Visual Studio solution 옵션을 선택할 수 있습니다. Visual Studio에서 전환하면 스크립트를 다시 컴파일하지 않으므로 스크립팅 정의를 다시 평가하지 않습니다. 라이브 게임 빌드를 디버깅하기 위해 게임 빌드의 UnityPlayer.dll을 개발 빌드의 빌드로 교체하여 최종 게임 빌드에서 개발 빌드로 전환할 수도 있습니다.
UNITY_CLOUD_BUILD 프로젝트가 Unity Build Automation으로 빌드될 때 정의됩니다.

참고: DEBUG 심볼은 C#에서 사전 정의되며 Unity에서는 지시문 #if DEBUG를 사용하는 것이 #if UNITY_EDITOR || DEVELOPMENT_BUILD와 동등합니다.

추가 리소스

Unity의 조건부 컴파일
커스텀 스크립팅 심볼