[Unity] Mono vs IL2CPP

spixychz·2025년 6월 28일

Unity

목록 보기
6/14

오늘의 질문

유니티의 Mono와 IL2CPP 스크립팅 백엔드의 차이점에 대해 설명하세요.

오늘의 대답

Mono와 IL2CPP는 유니티에서 C# 코드를 변환하는 두 가지 방식입니다.
Mono는 JIT 컴파일 방식으로 런타임 중 컴파일 하는 방식이고, IL2CPP는 AOT 컴파일 방식으로 빌드 시점에 컴파일합니다.
Mono는 빠른 빌드 시간과 디버깅의 편의성을 제공하지만, IL2CPP는 더 나은 런타임 성능과 플랫폼 호환성을 제공하기 때문에 개발 단계에서는 Mono를, 배포 단계에서는 IL2CPP를 사용하는 것이 일반적입니다.


스크립팅 백엔드?

유니티에서 C# 코드를 실제 실행 가능한 형태로 변환하는 프레임워크

  • C#은 .NET 환경에서만 작동하기 때문에 iOS, Android 플랫폼에 맞는 형태로 변환이 필요하다.
  • 따라서 C# 스크립트를 스크립팅 백엔드를 통해 실행 가능한 언어로 번역한다.
  • Mono 방식과 IL2CPP 두 가지 선택지가 있다.

Mono

JIT 컴파일 방식으로 런타임 컴파일

  • Just-In-Time (동적 번역, 런타임 컴파일): 코드를 실행하는 시점에 기계어로 번역하는 컴파일 기법

C# 스크립트 → IL(Intermediate Language) 코드 → 런타임에 JIT(Just-In-Time) 컴파일 → 실행

  • 빠른 빌드 시간
  • 쉬운 디버깅과 프로파일링
  • 상대적으로 느린 런타임 성능
  • iOS에서 사용 불가 (JIT 금지)

=> 빠른 빌드와 테스트 + 디버깅 = 개발 단계에서 사용

IL2CPP

AOT 컴파일 방식으로 실행 전 컴파일

  • Ahead-Of-Time: 빌드 타임에서 컴파일해 런타임 시 수행해야 할 작업량 감소.
  • Unity에서 개발한 방식

C# 스크립트 → IL 코드 → C++ 코드 변환 → 네이티브 컴파일 → 실행

  • 뛰어난 런타임 성능
  • 다양한 플랫폼 지원
  • 메모리 효율성
  • 긴 빌드 시간
  • 디버깅 어려움
  • 보안성 개선

=> 플랫폼 호환성 + 최적화된 성능 = 배포 단계에서 사용

비교

구분MonoIL2CPP
런타임 성능보통우수
보안성보통우수
메모리 사용많음적음
시작 시간느림 (JIT)빠름
디버깅쉬움어려움
플랫폼 지원제한적전체
빌드 크기작음
빌드 시간빠름느림

결론

개발할 때는 Mono, 배포할 때는 IL2CPP

두 백엔드는 각각의 목적이 다르다:

  • 빠른 개발을 위한 선택 => Mono
  • 성능을 위한 선택 => IL2CPP

참고자료
Mono VS IL2CPP

profile
UNITY로 게임 개발하는 사람

0개의 댓글