CLR(Common Language Runtime)은 게임의 두뇌 역할을 하는 스크립트가 실제로 컴퓨터에서 실행될 수 있도록 도와주는 가상 머신(Virtual Machine)환경을 의미합니다.
0. Runtime의 이해
프로그램이 실행되는 시간(상태)를 의미합니다. CLR을 이해할 때 아래의 것들이 CLR을 통해 프로그램 실행 중에 이루어지는 작업들이라고 이해하면 좋습니다.
1. Unity에서 CLR의 역할
C#은 코드를 작성하자마자 바로 실행되는 것이 아니라, IL(Intermediate Language)라는 중간 언어로 먼저 컴파일됩니다. CLR은 이 중간 언어를 받아서 다음과 같은 핵심 작업을 수행합니다.
- JIT(Just-In-Time) 컴파일: 게임 실행 중에 IL코드를 해당 기기(PC, 콜솔 등)의 CPU가 이해할 수 있는 기계어로 실시간 변환합니다.
- 메모리 관리(Garbage Collection): 더 이상 사용하지 않는 메모리를 자동으로 찾아내서 비워줍니다. (개발자가 일일이 메모리를 해제할 필요가 없게 해줍니다.)
- 예외 처리: 프로그램 실행 중 발생하는 오류(Exception)을 감지하고 관리합니다.
- 타입 안전성 체크: 코드가 메모리의 잘못된 영역을 건드리지 않도록 보안과 안정성을 유지합니다.
2. Unity의 특수한 상황: Mono 와 IL2CPP
일반적인 .NET 환경에서는 표준 CLR을 사용하지만, Unity는 멀티 플랫폼(iOS, Android, Windows 등)을 지원하기 위해 두 가지 형태의 런타임을 사용합니다.

둘의 가장 큰 차이점은 C#으로 짠 코드를 CPU가 이해할 수 있는 기계어로 바꾸는 타이밍입니다.
JIT는 그때 그때 필요할 때(Just-In-Time)
IL2CPP는 빌드 단계에서 미리 컴파일하여 사용자가 설치하는 단계에선 모두 기계어로 변경된 상태입니다.
3. 왜 CLR을 알아야 할까?
게임을 만들다 보면 성능 최적화가 필수적인데, 이 때 CLR의 동작 방식을 모르면 가비지 컬랙션(GC)으로 인한 렉(Stuttering)현상을 해결하기 어렵습니다. CLR이 메모리를 어떻게 관리하는지 이해하면 더 부드러운 게임을 만들 수 있습니다.
'게임 > Unity' 카테고리의 다른 글
| [Unity] GDC 2026 (0) | 2026.03.07 |
|---|---|
| [Unity] Unity의 컴파일 (0) | 2026.03.07 |
| [Unity] Unity에서 AI 활용하기, MCP for Unity (0) | 2026.02.07 |
| [Unity] 버전 6.3 LTS 업데이트 (0) | 2026.02.05 |
| [Unity] 2D 플레이어 조작법 및 주의사항 (0) | 2026.02.03 |
댓글