컴파일(Compile)은 사람이 사용하는 코드를 컴퓨터가 실행할 수 있는 코드로 번역하는 과정입니다.
하지만 Unity는 멀티 플랫폼 엔진이기 때문에, 일반적인 프로그램보다 컴파일 과정이 조금 더 복잡하고 단계적입니다. 크게 두 번의 번역 과정이 있다고 이해하면 쉽습니다.
1차 컴파일: C# > 중간언어(IL)
개발자가 코드를 수정하고 저장(Ctrl-S)한 뒤 Unity 에디터로 돌아오면, 우측 하단 회전하는 아이콘이 생기며 잠깐 멈추는 것을 본 적 있으실 겁니다. 이때가 1차 컴파일 시점입니다.
- 시점: 에디터에서 코드를 수정할 때 마다 실시간으로 발생
- 결과물: .dll 파일 형태의 IL(Intermediate Language, 중간 언어)
- 특징: 아직 완전한 기계어는 아닙니다. 운영체제에서도 돌아갈 수 있는 공용 번역본 상태입니다.
2. 2차 컴파일: 실행 환경에 따른 최종 번역 (IL -> 기계어)
실제로 게임이 돌아가려면 1차 결과물(IL)을 해당 기기의 CPU가 이해하는 기계어로 한 번 더 바꿔야 합니다. 여기서 Unity의 CLR인 Mono와 IL2CPP의 차이가 나타납니다.
1) Mono방식(JIT 컴퍼일)
- 시점: 게임을 실행하는 도중(Runtime)에 필요한 부분만 즉석에서 기계어로 번역합니다.
- 특징: 그때그때 번역하므로 개발 중 빌드 시간은 짧으나 비교적 성능이 떨어집니다.
2) IL2CPP 방식(AOT 컴파일)
- 시점: 빌드할 때 미리 전부 기계어로 번역합니다.
- 특징: 미리(Ahead Of Time) 번역한다고 해서 AOT라고 부릅니다. 빌드 시간이 길지만 실행 성능이 뛰어나고 보안이 강력합니다.
3. 컴파일 과정 요약표

4. 왜 이 과증을 알아야 할까?
컴파일 구조를 이해하면 다음과 같은 상황에 대처할 수 있습니다
- 컴파일 에러: 1단계에서 문법이 틀렸을 때 발생합니다. 게임을 틀기도 전에 빨간 줄이 뜨는 이유입니다
- 빌드 시간: IL2CPP는 C#을 C++로 바꾸고 다시 기계어로 굽는 복잡한 과정을 거치기 때문에 빌드 시간이 매우 깁니다.
- 성능 최적화: 2단계 컴파일 방식에 따라 메모리 관리나 연산 속도가 달라집니다.
'게임 > Unity' 카테고리의 다른 글
| [Unity] 프레임워크와 라이브러리 (0) | 2026.03.07 |
|---|---|
| [Unity] GDC 2026 (0) | 2026.03.07 |
| [Unity] Unity의 CLR (0) | 2026.03.07 |
| [Unity] Unity에서 AI 활용하기, MCP for Unity (0) | 2026.02.07 |
| [Unity] 버전 6.3 LTS 업데이트 (0) | 2026.02.05 |
댓글