Assembly Definition(어셈블리 정의)

by 5월 12, 2022 0 comments

요약 

사용하는 이유 : 

1. 스크립트 빌드 시간 감소

2. 단위테스트

사용시점 : 개발초기(학습이 아닌 실제 제품화 하려고 만들때)

유니티는 기본적으로 모든 프로젝트의 스크립트를 Assembly-CSharp.dll 로 컴파일 합니다. 

간단한 수정을 하더라도, 모든 스크립트를 빌드하기 때문에 여러 서드파티 에셋을 추가하거나, 프로젝트 규모가 커질경우에 빌드시간이 늘어나게 됩니다. 

그걸 모듈별로 나눠서 별도로 빌드해 놓으면 스크립트 컴파일시간이 대폭 줄어들게 됩니다. 

(예를들어 서드파티 에셋들의 경우 수정할일이 거의 없기 때문에 어셈블리 정의하는 편이 좋습니다

일부 에셋의 경우 어셈블리 정의된 파일을 포함해서 배포하고 있습니다.)


사용방법.

1. 에셈블리 정의를 할 폴더를 선택합니다.

(해당 폴더 아래 하위의 모든 스크립트에 대해서 정의됩니다.)



TextAsset 폴더구조는 다음과 같습니다. 
TestAsset 폴더의 어셈블리정의에는 아래 4개의 파일이 포함됩니다. 
- TestAsset : a.cs, b.cs
- Folder1 : c.cs, d.cs

Folder2 에는 어셈블리정의 파일이 있기 때문에 e.cs 파일이 다시 상위에서 정의되지 않습니다. 

여기서 헷갈렸던게
기존 C#의 dll 들은 동일 폴더내에서도 참조, 비참조를 할수 있었는데.
이 어셈블리 정의는 해당 폴더 및 하위 폴더에 대해서 참조 해버리기 때문에. 

종속성을 생각해서 폴더구조를 만들어줘야 한다는 것입니다. 

물론 각 파일별 폴더를 만들고 어셈블리정의 파일을 만들면 완벽하게 커스텀으로 사용 가능하지만 그럼 결국 정의 파일을 읽는데 시간이 더 소모하기 때문에 권장하진 않습니다.