프리 프로세서 심볼을 사용하여 어셈블리가 컴파일되고 애플리케이션의 빌드에 포함되는지 여부를 제어할 수 있습니다(에디터의 플레이 모드 포함). 어셈블리 정의 옵션의 Define Constraints 리스트와 함께 어셈블리를 사용하기 위해 정의해야 하는 심볼을 지정할 수 있습니다.
인스펙터 에서 프로퍼티를 확인할 어셈블리의 어셈블리 정의를 선택합니다.
Define Constraints 섹션에서 + 버튼을 클릭하여 제약 리스트에 새로운 심볼을 추가합니다.
심볼 이름을 입력합니다.
이름 앞에 느낌표를 넣어 해당 심볼을 반대로 바꿀 수 있습니다. 예를 들어 제약인 !UNITY_WEBGL은 UNITY_WEBGL이 정의되지 않은 경우 어셈블리를 포함합니다.
Apply 를 클릭합니다.
다음 심볼을 제약으로 사용할 수 있습니다.
스크립트에서 정의된 심볼은 제약이 충족되었는지 판단할 때 고려되지 않습니다.
자세한 내용은 정의 제약를 참조하십시오.
프로젝트가 특정 버전의 Unity 또는 패키지를 사용하는지에 따라 어셈블리에 다른 코드를 컴파일해야 하는 경우 항목을 Version Defines 리스트에 추가할 수 있습니다. 이 리스트에는 심볼을 정의해야 하는 시기에 대한 규칙이 명시되어 있습니다. 버전 번호의 경우 특정 버전 또는 다양한 버전으로 평가되는 논리 표현식을 지정할 수 있습니다.
심볼을 조건부로 정의하려면 다음 단계를 따르십시오.
인스펙터 에서 프로퍼티를 볼 어셈블리의 어셈블리 정의 에셋을 선택합니다.
Version Defines 섹션에서 + 버튼을 클릭하여 리스트에 항목을 추가합니다.
다음 프로퍼티를 설정합니다.
Expression outcome 은 표현식이 평가될 버전을 보여 줍니다. 결과가 Invalid 로 표시되면 표현식 구문이 잘못된 것입니다.
다음 예시에서는 프로젝트가 타임라인 1.3을 사용하는 경우 심볼 USE_TIMELINE_1_3을 정의하며, 프로젝트가 Unity 2021.2.0a7 이상에서 열리면 USE_NEW_APIS를 정의합니다.
Apply 를 클릭합니다.
어셈블리 정의에서 정의된 심볼은 해당 정의에 대해 생성된 어셈블리의 스크립트 범위 내에만 있습니다.
Version Defines 리스트를 사용하여 정의된 심볼을 정의 제약 으로 사용할 수 있습니다. 따라서 특정 패키지의 특정 버전이 프로젝트에 설치된 경우에만 어셈블리를 사용해야 한다고 지정할 수 있습니다.
표현식을 사용하여 정확한 버전 또는 다양한 버전을 지정할 수 있습니다. 버전 정의 표현식은 수학 범위 표기법을 사용합니다.
대괄호 “[]”는 범위가 엔드포인트를 포함함을 지정합니다.
> [1.3,3.4.1]은 1.3.0 <= x <= 3.4.1로 평가됩니다
괄호 “()”는 범위가 엔드포인트를 제외함을 의미합니다.
> (1.3.0,3.4)는 1.3.0 < x < 3.4.0으로 평가됩니다
단일 표현식에서 범위 유형을 혼합할 수 있습니다.
> [1.1,3.4)는 1.1.0 <= x < 3.4.0으로 평가됩니다
> (0.2.4,5.6.2-preview.2]는 0.2.4 < x <= 5.6.2.-preview.2로 평가됩니다
대괄호 안에 단일 버전 지정자를 사용하여 정확한 버전을 지정할 수 있습니다.
> [2.4.5]는 x = 2.4.5로 평가됩니다
좀 더 빠른 방법으로는 범위 대괄호 없이 단일 버전을 입력하여 표현식에 해당 버전 이상이 포함되어 있음을 나타낼 수 있습니다.
> 2.1.0-preview.7은 x >= 2.1.0-preview.7로 평가됩니다
참고: 표현식에는 공백이 허용되지 않습니다. 와일드카드 문자는 지원되지 않습니다.
Unity의 현재 버전(및 어셈블리 정의를 지원하는 모든 버전)은 MAJOR.MINOR.REVISION(예: 2017.4.25f1, 2018.4.29f1, 2019.4.7f1) 같이 세 부분으로 나뉜 버전 지정자를 사용합니다.
2022.x.z 이하 버전의 릴리스 연도 또는 Unity 6(6000.x.z) 이상의 메이저 기술 버전을 나타내는 4자리 값입니다.출시 유형 지정자의 비교 관계는 다음과 같습니다.
> a < b < f = c < p < x
즉, 알파 릴리스는 베타 릴리스보다 이전 것으로 간주되며, 이는 노멀(f) 또는 중국(c) 릴리스보다 이전 것으로 간주됩니다. 패치 릴리스는 항상 리비전 번호가 동일한 일반 릴리스 또는 중국 릴리스보다 나중에 나온 것이고 실험 기능 릴리스는 다른 릴리스 유형보다 나중에 나온 것입니다. 실험 기능 릴리스에서는 끝에 증분 숫자를 사용하지 않습니다.
Unity 버전 번호는 REVISION 컴포넌트 뒤에 2019.3.0f11-Sunflower 같은 접미사를 사용할 수 있습니다. 모든 접미사는 버전 비교를 위해 무시됩니다.
예를 들어, 다음 표현식은 Unity의 모든 2017 또는 2018 버전을 포함하지만, 2019 이상 버전은 일체 포함하지 않습니다.
[2017,2019)
패키지 및 모듈 버전 지정자는 유의적 버전 지정 형식인 MAJOR.MINOR.PATCH-LABEL 같이 네 부분으로 구성됩니다. 처음 세 부분은 항상 숫자이지만 레이블은 문자열입니다. 프리뷰에서 Unity 패키지는 문자열, preview 또는 preview.n, 즉 n > 0를 사용합니다. 패키지 버전 번호에 대한 자세한 내용은 패키지 버전 지정을 참조하십시오.
예를 들어, 다음 표현식은 MAJOR.MINOR 버전이 3.2–6.1(포함)인 모든 패키지 버전을 포함합니다.
[3.2,6.1]