최근에 회사에서 서드파티를 붙혀보면서 빌드 관련한 프로퍼티를 많이 보게 되었다.
그중에 궁금했던게 스크립팅 백엔드 였는데 해당 정보를 관련해서 정리를 한번 해본다.
스크립팅 백엔드란?
C# 혹은 스크립트 언어로 작성한 로직들을 실행가능한 형태로 변환하는 컴파일러를 얘기한다.
Mono VS IL2CPP
Mono
JIT 컴파일 방식을 채택한 유니티의 기본 스크립트 백엔드이다.
닷넷 호환 언어 컴파일 과정과 유사하고
프로그램이 실행되는 시점에 필요한 코드를 동적으로 네이티브 코드로 번역하기 때문에 초기 실행속도는 니리지만 반복적으로 실행되는 코드는 최적화되어 성능이 향상된다.
에디터에서 플레이 모드로 실행할때 기본적으로 사용된다.
IL2CPP
AOT 컴파일 방식을 채택한 유니티의 스크립팅 백엔드이다.
실행 이전에 네이티브 코드로 컴파일하기 때문에 초기 실행 속도가 빠르고 메모리 사용량이 최적화되며, 또한 코드의 보안이 강화된다.
그렇기 떄문에 모바일 기기와 같이 제한된 자원을 가진 환경에서 효율적인 성능으 ㄹ제공 가능 .
작동 방식
- Unity 스크립팅 API 코드를 일반 .NET DLL(관리되는 어셈블리)로 컴파일한다.
- 관리되는 바이트코드 스트리핑을 적용한다. 이 단계는 빌드된 게임의 크기를 크게 줄여준다.
- 모든 관리되는 어셈블리를 표준 C++ 코드로 전환한다.
- 생성된 C++ 코드와 IL2CPP의 런타임 부분을 네이티브 플랫폼 컴파일러로 컴파일한다.
- 대상 플랫폼에 따라 실행 가능한 파일이나 DLL에 코드를 연결한다.

해당 이미지,설명 출처 :
https://velog.io/@wjdgh9577/Unity-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8C%85-%EB%B0%B1%EC%97%94%EB%93%9CScripting-Backend
[Unity] 스크립팅 백엔드(Scripting Backend)
유니티 빌드 설정중 하나인 스크립팅 백엔드에 대해 정리한다.
velog.io
관리되는 코드 스트리핑(Managed Code Stripping)
빌드에서 사용되지 않는 코드를 추적하여 최종 빌드에서 제외하는 작업이다.
이를 통해 최종 빌드의 크기를 대폭 줄일 수 있다.
C# 스크립트를 IL 어셈블리로 컴파일한 다음 수행된다.
IL2CPP의 경우 IL 어셈블리를 C++로 컴파일하는 작업이 추가되는데, 스트리핑을 통해 코드를 줄이면 컴파일할 코드가 줄어들어 전체 빌드 시간이 단축된다. (위 작동 방식 2번 과정)
프로젝트의 코드를 정적으로 분석하여 도달 불가능한 부분을 제거하는데 리플렉션과 같이 동적인 코드가 제거되어 오작동을 일으킬 수 있다.
관리되는 스트리핑 레벨(Managed Stripping Level) 설정을 조절하여 스트리핑을 제어할 수 있다.
(Mono는 Disabled, IL2CPP는 Low가 기본값이다.)
'유니티' 카테고리의 다른 글
| 오디오 믹서 (Aduio Mixer) (1) | 2025.09.14 |
|---|---|
| Custom Editor (0) | 2025.08.30 |
| RectTransformUtility (3) | 2025.03.19 |
| RectTransformUntility에 대해서 (17) | 2025.01.07 |
| Bounds<경계> 구조체 (15) | 2024.10.20 |