Unity 스크립트 정의 에셋 설명
Unity의 스크립트 정의 에셋은 프로젝트 내 스크립트의 컴파일 및 종속성을 정의하는 중요한 요소입니다. 이 문서에서는 어셈블리 정의의 프로퍼티와 설정 방법을 자세히 설명합니다.
어셈블리 정의란?
어셈블리 정의는 Unity 프로젝트의 스크립트 컴파일 방식을 제어합니다. 이를 통해 스크립트의 종속성을 명확하게 하고, 보다 효율적으로 스크립트를 관리할 수 있습니다.
어셈블리 정의 프로퍼티
다음은 어셈블리 정의의 주요 프로퍼티입니다.
| 프로퍼티 | 설명 |
|---|---|
| 이름 | 어셈블리의 이름(파일 확장자 없음). 전체 프로젝트 범위에서 고유해야 합니다. |
| Allow ‘unsafe’ Code | C#의 unsafe 코드를 사용하고 싶을 때 활성화합니다. |
| Auto Referenced | 해당 어셈블리를 자동으로 참조해야 하는지 여부를 지정합니다. |
| No Engine References | UnityEngine 혹은 UnityEditor에 대한 레퍼런스를 추가하지 않도록 설정합니다. |
| Override References | 수동으로 사전 컴파일된 어셈블리를 지정할 수 있도록 합니다. |
| Root Namespace | 이 어셈블리 내에서 사용될 기본 네임스페이스를 정의합니다. |
| 제약 정의 | 어셈블리를 컴파일 할 때 충족해야 할 조건입니다. |
어셈블리 정의 세부 설명
- 이름: 어셈블리의 이름은 프로젝트 내에서 고유해야 하며, 리버스 DNS 방식으로 이름을 설정하면 좋습니다. (예: com.yourcompany.yourproject)
- Allow ‘unsafe’ Code: 이 옵션을 활성화하면, Unity는 어셈블리 컴파일 시 C#의
/unsafe옵션을 사용합니다. - Auto Referenced: 기본적으로 Unity는 모든 사전 정의된 어셈블리를 참조하게 됩니다. Auto Reference 설정을 끄면, 자동 참조 관계를 설정하지 않습니다.
- No Engine References: 이 옵션을 활성화하면 Unity의 기본 레퍼런스를 추가하지 않습니다.
- Override References: 다른 어셈블리에 대해 수동으로 참조를 관리할 수 있습니다. 이 설정을 활성화하면 Assembly References 섹션이 표시됩니다.
- Root Namespace: 코드 에디터(Rider, Visual Studio 등)를 사용할 때 기본 네임스페이스를 설정합니다.
- 제약 정의: 컴파일러에게 이 특정 어셈블리가 컴파일 되기 위해 충족해야 할 조건을 정의합니다. 이는 C#의 #define 지시문과 유사하게 작용합니다.
활용 및 응용 예제
- 게임 모듈화: 여러 게임 모듈을 독립적인 어셈블리로 나누어, 필요에 따라 특정 모듈만 포함시키거나 제외할 수 있습니다.
- 플랫폼 별 빌드: 각각의 플랫폼에 맞춰 필요한 스크립트만 포함하도록 제약 조건을 설정하여, 빌드 시간을 절감합니다.
- 보안 강화: Allow ‘unsafe’ Code 옵션을 사용하여 성능이 중요한 게임의 특정 부분에서 높은 성능을 요구하는 C# 코드를 사용할 수 있습니다.
- 버전 관리: 프로젝트에 포함된 패키지 버전에 기반하여 특정 스크립트를 정의 조건에 맞춰 자동으로 컴파일할 수 있습니다.
이러한 설정을 통해 Unity 프로젝트는 더 효과적으로 관리되고, 개발자의 의도에 맞춘 기능을 제공할 수 있습니다. 스크립트와 어셈블리 관리에 대한 이해는 최적의 게임 개발 경험을 위한 필수 요소입니다.