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 에디터 버전에 따라 특정 스크립팅 심볼을 자동으로 정의합니다.
버전 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와 동등합니다.