본문 바로가기

Study/Unity Engine

[Unity] 컴파일 과정

 

유니티의 스크립트와 스크립트 외의 다른 리소스들의 컴파일 과정을 살펴보자.


스크립트

1. 스크립트 분류

  • Asset 폴더 내 스크립트를 Assembly Definition Files (.asmdef)와 디렉토리 구조에 따라 그룹화한다.
  • 예를 들어, Assets/Scripts에 있는 스크립트는 기본적으로 Assembly-CSharp.dll이라는 하나의 DLL로 컴파일 된다.

2. 컴파일

  • 유니티는 Roslyn 컴파일러를 사용하여 C# 코드를 DLL 파일로 변환한다.

3. 출력

  • 이렇게 생성된 DLL 파일은 Project 폴더의 Library/ScriptAssemblies 폴더에 저장된다.
    • Assembly-CSharp.dll: 사용자가 작성한 대부분의 스크립트가 포함된 메인 DLL.
    • Assembly-CSharp-Editor.dll: 에디터 전용 스크립트가 포함된 DLL.
     

 


스크립트 외의 다른 리소스

1. 리소스

  • 빌드 과정에서 유니티 에셋 번들 시스템 또는 리소스 데이터 파일 (.resS, .assetbundle)로 패키징 된다.
  • 이 데이터는 런타임에 메모리에 로드되거나 Resources.Load 같은 API로 호출된다.

2. 쉐이더 - 특수처리

  • 쉐이더 파일(.shader, .cginc)은 유니티의 쉐이더 컴파일러를 통해 GPU에서 실행 가능한 바이트코드로 변환된다.
  • 변환된 결과는 .compiled 파일로 저장되며, 유니티 빌드에 포함된다.

3. 에셋 번들 및 어드레서블 (AssetBundles, Addressables)

  • 에셋 관리 방식
    • 에셋 번들은 특정 리소스 그룹을 번들링하여 효율적으로 로드할 수 있도록 패키징한다.
    • 이 과정에서 DLL 파일이 아니라 바이너리 데이터로 패키징된다.

유니티 스크립트와 리소스의 차이점

항목 스크립트 (C#) 리소스 (텍스처, 오디오 등)
처리 방식 DLL로 컴파일 압축 및 변환 후 패키징
저장 경로 Library/ScriptAssemblies 빌드 출력물(예: .resS, .assetbundle)
런타임 사용 방법 코드로 호출 (자동 로드) API를 통해 로드 (예: Resources.Load)

 


그렇다면, 컴파일 시간을 줄이기 위해서 이 DLL 파일을 이용할 수 있을 것이다!

'Study > Unity Engine' 카테고리의 다른 글

[Unity] Profiling  (0) 2025.01.18
[Unity] DLL과 PDB  (0) 2025.01.18
[Unity] 오브젝트 검색 방법  (0) 2025.01.18
[Unity] ScriptableObject  (0) 2025.01.18
[Unity] Layer  (0) 2025.01.18