Unity 스크립팅 API 가이드 (2022.3)
서문
Unity의 스크립팅 API는 게임 및 애플리케이션 개발에 필요한 다양한 기능을 제공합니다. 본 문서에서는 에셋과 어셈블리 정의에 대해 설명하고, JSON 형식으로 작성된 어셈블리 정의의 구조 및 사용법을 소개합니다.
어셈블리 정의란?
어셈블리 정의는 Unity의 스크립트 라이브러리를 구성하는 방식으로, JSON 형식으로 작성됩니다. 이 정의를 통해 특정 플랫폼에 대한 스크립트의 포함 여부를 설정할 수 있습니다.
어셈블리 정의 JSON 구조
어셈블리 정의 JSON 객체는 다음과 같은 필드로 구성됩니다:
| 필드 이름 | 설명 |
|---|---|
| allowUnsafeCode | (선택 사항) '안전하지 않은' 코드를 허용할지 여부를 결정하는 불리언 값입니다. 기본값은 false. |
| autoReferenced | (선택 사항) 자동 참조를 설정하는 불리언 값입니다. 기본값은 true. |
| defineConstraints | (선택 사항) 심볼 이름의 배열로, 각 심볼은 특정 조건에 따른 제약을 설정합니다. |
| excludePlatforms | (선택 사항) 사용하지 않을 플랫폼의 이름 배열입니다. |
| includePlatforms | (선택 사항) 포함할 플랫폼의 이름 배열입니다. |
| name | (필수) 어셈블리의 이름입니다. |
| noEngineReferences | (선택 사항) 엔진 레퍼런스를 사용하지 않을지 여부를 설정하는 불리언 값입니다. 기본값은 false. |
| optionalUnityReferences | (선택 사항) 테스트 어셈블리와 관련된 이전 버전의 필드입니다. |
| overrideReferences | (선택 사항) true로 설정하면 precompiledReferences의 값을 오버라이드합니다. 기본값은 false. |
| precompiledReferences | (선택 사항) 참조하는 DLL 라이브러리의 이름 배열입니다. |
| references | (선택 사항) 다른 어셈블리에 대한 참조입니다. |
| versionDefines | (선택 사항) 각 버전 정의를 설명하는 오브젝트 배열입니다. |
예시
다음은 어셈블리 정의를 나타내는 JSON 문자열의 예시입니다:
{
"name": "BeeAssembly",
"references": [
"Unity.CollabProxy.Editor",
"AssemblyB",
"UnityEngine.UI",
"UnityEngine.TestRunner",
"UnityEditor.TestRunner"
],
"includePlatforms": [
"Android",
"LinuxStandalone64",
"WebGL"
],
"excludePlatforms": [],
"overrideReferences": true,
"precompiledReferences": [
"Newtonsoft.Json.dll",
"nunit.framework.dll"
],
"autoReferenced": false,
"defineConstraints": [
"UNITY_2019",
"UNITY_INCLUDE_TESTS"
],
"versionDefines": [
{
"name": "com.unity.ide.vscode",
"expression": "[1.7,2.4.1]",
"define": "MY_SYMBOL"
}
],
"noEngineReferences": false
}
어셈블리 정의 레퍼런스
어셈블리 정의 레퍼런스는 특정 어셈블리 정의를 참조하는 JSON 객체입니다. 두 가지 형식을 사용할 수 있습니다:
- 어셈블리 이름 사용
- GUID 사용
{
"reference": "AssemblyA"
}
{
"reference": "GUID:f4de40948f4904ecb94b59dd38aab8a1"
}
활용 예제
- 모바일 게임 개발: 특정 게임이 Android 및 iOS에서 실행되도록 설정할 수 있습니다.
includePlatforms및excludePlatforms를 활용하세요. - 테스트 어셈블리 설정: 테스트를 용이하게 하기 위해
optionalUnityReferences를 사용하여 테스트 전용 어셈블리를 관리할 수 있습니다. - 버전 관리: 여러 Unity 버전에서 작동하도록 하기 위해
versionDefines를 활용하여 코드의 조건부 컴파일을 구현할 수 있습니다.
마무리
Unity의 어셈블리 정의는 프로젝트의 코드 작성 및 관리를 효율적으로 유지하는 데 큰 도움이 됩니다. 적절한 설정을 통해 다양한 플랫폼에서 효과적으로 작업할 수 있습니다.