일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- UniRx
- addressable
- 스프라이트 아틀라스
- Boxing
- sprite atlas
- Abstract Factory Pattern
- ==
- 디자인 패턴
- 인앱 결제
- ReferenceEquals
- 플러그인
- 1인 개발
- equals
- Addressable System
- Strategy Pattern
- Zenject
- c#
- 게임 개발
- ScriptableObject
- Post Processing
- Android Plugin
- Reflection
- design pattern
- Unboxing
- 포스트 프로세싱
- Unity
- 최적화
- Today
- Total
One_KWS
Mono, IL2CPP 본문
Mono
Mono는 Unity에서 기본적으로 사용되는 스크립팅 런타임이다. .NET Framework의 경우 마이크로소프트에서 개발한 소프트웨어 프레임워크로 윈도우 외의 플랫폼은 지원하지 않는다. 반면에 Mono는 오픈소스 프로젝트로, 리눅스, macOS, iOS, 안드로이드 등 다양한 운영체제에서 실행될 수 있다.
Mono는 .NET Framework과 유사한 구조를 가지고 있으며, C# 스크립트를 IL 코드로 변환하고, JIT(Just-In-Time) 컴파일러를 사용하여 IL 코드를 실행한다.
Mono는 다양한 플랫폼에서 실행할 수 있고 빌드가 빠르다는 장점이 있지만 코드 난독화 및 보호 솔루션이 없을 경우 DLL 파일을 통해 쉽게 디컴파일이 가능하여 보안에 취약하다는 단점이 있다.
IL2CPP
IL2CPP는 Unity의 다른 스크립팅 런타임으로, AOT(Ahead-Of-Time) 컴파일 방식을 따른다. IL2CPP는 C# 코드를 컴파일하여 생성된 IL 코드를 C++ 코드로 변환한다. 변환된 C++ 코드는 실행 가능한 네이티브 코드로 컴파일되어 실행된다. 런타임 시점에 코드를 컴파일하는 JIT 컴파일러와 달리, 미리 코드를 컴파일하여 네이티브 코드로 만들기 때문에 컴파일이 필요하지 않아 메모리 사용량을 줄이고 실행 속도를 높일 수 있다. 또한 L2CPP는 C++ 코드로 변환하여 미리 컴파일된 코드를 사용하기 때문에 보안에 강하고 C++ 코드를 다시 네이티브 코드로 컴파일 하기 때문에 다양한 플랫폼에서 실행될 수 있다.
반면에 IL2CPP는 C# 코드를 C++ 코드로 변환한 후, 해당 플랫폼의 네이티브 코드로 컴파일하는 과정을 거치기 때문에 빌드 시간이 길어진다. 또한 IL2CPP는 C# 코드와 C++ 코드 간에 매핑을 해주기 때문에, 디버깅 과정에서 C++ 코드와 관련된 정보를 파악하기 어렵다는 단점이 있다.
'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 |