본문 바로가기
게임/Unity

[Unity] Unity의 CLR

by leejiwoo21 2026. 3. 7.

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

댓글