티스토리 뷰

## 어셈블리 정의 인스펙터 속성(*.asmdef 에셋의 직렬화 정보)

- name : 어셈블리 이름(unique 해야함)

 

### General

- Allow 'unsafe' Code : C# `unsafe`키워드를 사용중인지 Unity 컴파일러에게 알림(결과적으로 "/unsafe" 옵션 전달)

- Auto Referenced : predefined assemblies(e.g. Assembly-CSharp.dll, etc)들이 해당 어셈블리를 자동참조 하는지 여부

- No Engine References : Unity Engine 어셈블리 참조 여부

- Override References : precompiled assemblies(외부에서 컴파일된 plug-in)를 자동참조 하지않고 수동참조하도록 오버라이드

  - 기본적으로 어셈블리 정의를 사용해 생성된 프로젝트의 모든 어셈블리는 precompiled된 모든 어셈블리를 자동참조하며, 이 경우 precompiled 어셈블리 중 하나만 업데이트해도 Unity가 모든 어셈블리를 재컴파일하는 오버헤드 발생

  - 오버헤드 방지를 위해 참조방식을 override하여 실제로 사용하는 precompiled어셈블리만 참조하도록 할 수 있음

  - 설정시 현재 Build Settings에 설정된 플랫폼에 호환되는 precompiled 어셈블리만 나타나기 때문에 각 플랫폼 마다 설정필요(*.asmdef 에셋파일에 저장됨)

- Root Namespace

  - 해당 어셈블리정의의 스크립트 생성시 사용되는 기본 namespace (e.g. script template의 `#ROOTNAMESPACEBEGIN#`)

  - 스크립트 생성시 우선순위 : Assembly Root Namespace > Project Settings Root Namespace

 

### Define Constraints

- 조건부 어셈블리 포함 정의 : 스크립트 수준이 아닌 어셈블리 수준에서 작동

- 해당 제약 정의에 충족하는 경우에만 컴파일 후 참조 및 빌드에 포함됨

- `!`, `||` 연산자 사용 가능

 

### Assembly Definition References

- Use GUIDs : 유니티 메타데이터(*.meta)를 통한 GUID 사용. 종속성(참조) 관계없이 해당 어셈블리 name 변경 가능하지만 파일이동, 메타데이터 삭제 등으로 꼬이는 경우 GUID 초기화 필요

- Assembly Definition References : 어셈블리정의 참조설정을 통한 어셈블리간 종속성 정의

 

### Assembly References

- precomiled어셈블리 참조설정을 통한 종속성 정의

 

### Platforms

- 해당 어셈블리의 플랫폼 호환성 설정

- 설정된 플래폼에서만 해당 어셈블리를 컴파일 또는 참조

 

### Version Defines

- 특정 Unity버전 또는 package버전에 따라 컴파일 및 참조제약 정의

 

## 컴파일 순서 4단계

각 컴파일은 프로젝트 루트에 있는 자동생성된 C# 프로젝트 파일(.csproj)을 사용해 단계적으로 진행된다.

유니티가 자동설정한 컴파일 옵션은 해당 파일을 통해 확인 가능하다.

 

- Phase 1 : Assembly-CSharp-firstpass : 최상위 특수폴더 런타임 스크립트(e.g. Plugins)

- Phase 2 : Assembly-CSharp-Editor-firstpass : 최상위 특수폴더내의 Editor폴더의 에디터 스크립트

- Phase 3 : Assembly-CSharp : Editor 폴더에 있지 않은 기타 모든 스크립트

- Phase 4 : Assembly-CSharp-Editor : 나머지 모든 Editor 폴더에 있는 스크립트

 

## 결론

- 컴파일 및 빌드 오버헤드를 줄이기 위해 필수적 선택

- 직렬화 속성을 통해 predefined, definition, precomiled 어셈블리간의 종속성 세팅

- 적절한 Symbol 세팅을 통한 조건부 컴파일 및 빌드 세팅

 

## 추가

- 프로젝트 구조상 하위폴더로 이동 불가능한 스크립트들은 Assembly Definition Reference 적절히 활용

- 난독화 및 보안관련 모듈 적용시 효율성에 대해서는 차후 검토 필요

 

 

## References

https://docs.unity3d.com/kr/current/Manual/ScriptCompilationAssemblyDefinitionFiles.html

 

어셈블리 정의 - Unity 매뉴얼

어셈블리 정의 및 어셈블리 레퍼런스는 스크립트를 어셈블리로 구성할 수 있는 에셋입니다.

docs.unity3d.com

https://docs.unity3d.com/kr/current/Manual/ScriptCompileOrderFolders.html

 

특수 폴더와 스크립트 컴파일 순서 - Unity 매뉴얼

Unity는 몇몇 프로젝트 폴더 이름을 콘텐츠가 특수한 목적을 가지고 있음을 표시하기 위한 목적으로 따로 보관합니다. 이들 중 일부는 스크립트 컴파일 순서에 영향을 줍니다. 폴더명은 다음과

docs.unity3d.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함