Unity의 빌트인 스크립팅 심볼 외에도 커스텀 스크립팅 심볼을 정의할 수 있습니다. 커스텀 스크립팅 심볼을 정의하는 위치에 따라 해당 심볼이 적용되는 범위가 결정됩니다. 다음 위치에서 커스텀 심볼을 정의할 수 있습니다.
다음과 같이 전체 프로젝트에 적용되는 커스텀 스크립팅 심볼을 응답 파일 에셋으로 정의할 수 있습니다.
csc.rsp의 이름을 지정하고 프로젝트의 Assets 폴더 루트에 넣습니다.-define:으로 시작하는 줄에 스크립팅 심볼을 정의한 후 세미콜론으로 구분된 스크립팅 심볼을 하나 이상 지정합니다.Unity는 시작 시 이 파일을 읽고 코드를 컴파일하기 전에 적용합니다. 예를 들어 csc.rsp 파일에 -define:UNITY_DEBUG;UNITY_TEST 줄 하나를 포함하는 경우 UNITY_DEBUG 및 UNITY_TEST 심볼은 프로젝트의 모든 C# 스크립트에 전역 정의된 스크립팅 기호로 포함됩니다.
참고: Unity가 스크립트를 다시 컴파일하기 전에는 .rsp 파일에 대한 변경 사항이 적용되지 않습니다. 단일 스크립트 파일을 업데이트하거나 다시 임포트하여 재컴파일을 트리거할 수 있습니다.
다음과 같이 플랫폼별 커스텀 스크립팅 심볼을 정의할 수 있습니다.
참고: Copy Defines 버튼을 누르면 목록의 현재 커스텀 스크립팅 심볼 세트를 세미콜론으로 구분된 문자열 값으로 클립보드에 복사합니다.
다음과 같이 빌드 프로파일에 대한 커스텀 스크립팅 심볼을 정의할 수 있습니다.
참고: -activeBuildProfile 커맨드 라인 인자를 사용해 에디터를 실행하여 지정한 빌드 프로파일과 커스텀 스크립팅 심볼을 시작할 때부터 적용할 수 있습니다.
다음 API를 사용하여 스크립팅 심볼을 정의할 수 있습니다.
PlayerSettings.SetScriptingDefineSymbolsBuildPlayerOptions.extraScriptingDefinesBuild.Player.ScriptCompilationSettings-extraScriptingDefines
BuildPlayerOptions.extraScriptingDefines 및 Build.Player.ScriptCompilationSettings-extraScriptDefines는 플레이어 빌드에만 적용되므로 에디터 스크립트에 적용되는 스크립팅 심볼을 정의할 때는 PlayerSettings.SetScriptingDefineSymbols를 사용하십시오. 이는 플레이어 설정에서 플랫폼별 스크립팅 심볼을 설정하는 코드와 동일한 코드입니다.
중요: SetScriptingDefineSymbols가 있는 코드로 생성된 심볼은 에디터가 다시 제어할 수 있게 되고 스크립트를 다시 컴파일할 때까지 적용되지 않습니다. 예를 들어 에디터 스크립트에서 SetScriptingDefineSymbols로 스크립팅 심볼을 생성한 후 다음 줄에서 BuildPipeline.BuildPlayer를 호출하는 경우 이전 줄에서 생성된 새로운 심볼은 아직 적용되지 않습니다. 이 경우 BuildPlayer 실행의 일환으로 실행되는 에디터 코드는 새 심볼 없이 실행되며 플레이어가 의도한 대로 빌드하지 않을 수 있습니다.
에디터가 배치 모드로 실행될 때는 스크립트 리컴파일을 트리거하는 메커니즘이 없습니다. 배치 모드에서 실행되는 에디터에서 특정 심볼을 정의해야 하는 경우 시작할 때부터 csc.rsp 에셋 파일을 사용하여 해당 심볼이 존재해야 합니다.
커스텀 스크립팅 심볼을 여러 위치에 정의하면 Unity는 현재 빌드 설정에 적용되는 모든 심볼을 합칩니다. 심볼을 덮어쓰지 않고 각 범위에서 상속받습니다( 프로젝트 전체 심볼(csc.rsp)+플랫폼별 심볼(플레이어 설정)+빌드 프로파일 심볼(빌드 데이터)). 플랫폼 및 빌드 프로파일 심볼은 활성 빌드 프로파일과 일치하는 경우에만 포함됩니다.
예를 들어 프로젝트에 다음 위치에 정의된 커스텀 스크립팅 심볼이 있다고 가정해 보겠습니다.
| 위치 | 정의된 심볼 |
|---|---|
csc.rsp |
SYMBOL_A |
| Windows 플레이어 설정 | SYMBOL_B |
| WindowsBuildProfile1 | SYMBOL_C |
| WindowsBuildProfile2 | SYMBOL_D |
이 예시 설정에 따라 다음 표에는 다양한 빌드 프로파일이 활성화될 때 에디터와 플레이어 코드에 대해 활성화되는 심볼이 나와 있습니다.
| 활성 빌드 프로파일 | 활성 심볼 |
|---|---|
| Android | SYMBOL_A |
| Windows |
SYMBOL_A, SYMBOL_B
|
| WindowsBuildProfile1 |
SYMBOL_A, SYMBOL_B, SYMBOL_C
|
| WindowsBuildProfile2 |
SYMBOL_A, SYMBOL_B, SYMBOL_D
|
코드에서 #if 지시문으로 이러한 동작을 테스트할 수 있습니다. 자세한 내용은 테스트 조건부 컴파일을 참조하십시오.