One_KWS

Mono, IL2CPP 본문

Unity

Mono, IL2CPP

One-Kim 2023. 4. 1. 18:48

Mono

Mono는 Unity에서 기본적으로 사용되는 스크립팅 런타임이다. .NET Framework의 경우 마이크로소프트에서 개발한 소프트웨어 프레임워크로 윈도우 외의 플랫폼은 지원하지 않는다. 반면에 Mono는 오픈소스 프로젝트로, 리눅스, macOS, iOS, 안드로이드 등 다양한 운영체제에서 실행될 수 있다.

Mono는 .NET Framework과 유사한 구조를 가지고 있으며, C# 스크립트를 IL 코드로 변환하고, JIT(Just-In-Time) 컴파일러를 사용하여 IL 코드를 실행한다.

Mono는 다양한 플랫폼에서 실행할 수 있고 빌드가 빠르다는 장점이 있지만 코드 난독화 및 보호 솔루션이 없을 경우 DLL 파일을 통해 쉽게 디컴파일이 가능하여 보안에 취약하다는 단점이 있다.

Mono

IL2CPP

IL2CPP는 Unity의 다른 스크립팅 런타임으로, AOT(Ahead-Of-Time) 컴파일 방식을 따른다. IL2CPP는 C# 코드를 컴파일하여 생성된 IL 코드를 C++ 코드로 변환한다. 변환된 C++ 코드는 실행 가능한 네이티브 코드로 컴파일되어 실행된다. 런타임 시점에 코드를 컴파일하는 JIT 컴파일러와 달리, 미리 코드를 컴파일하여 네이티브 코드로 만들기 때문에 컴파일이 필요하지 않아 메모리 사용량을 줄이고 실행 속도를 높일 수 있다. 또한 L2CPP는 C++ 코드로 변환하여 미리 컴파일된 코드를 사용하기 때문에 보안에 강하고 C++ 코드를 다시 네이티브 코드로 컴파일 하기 때문에 다양한 플랫폼에서 실행될 수 있다.

반면에 IL2CPP는 C# 코드를 C++ 코드로 변환한 후, 해당 플랫폼의 네이티브 코드로 컴파일하는 과정을 거치기 때문에 빌드 시간이 길어진다. 또한 IL2CPP는 C# 코드와 C++ 코드 간에 매핑을 해주기 때문에, 디버깅 과정에서 C++ 코드와 관련된 정보를 파악하기 어렵다는 단점이 있다.

 

IL2CPP

'Unity' 카테고리의 다른 글

스프라이트 아틀라스 (Sprite Atlas)  (0) 2023.04.22
Unity 최적화 - Asset  (0) 2023.04.19
Addressable System #5 - Build layout report  (0) 2023.03.24
Unity - Editor.Log  (0) 2023.03.24
Zenject  (0) 2023.03.14