[Unity]Unity의 Mono

2022. 8. 9. 19:55Tech/Unity

    목차

서론

 Unity엔진을 사용하다 보면, Mobile 빌드시 Mono라는 것을 볼 수 있습니다. Mono는 Unity에서 모바일을 빌드하는 방식 중 하나인데요. 이번 글에서는 Mono에 관하여 알아보겠습니다.


.Net Framework가 아닌 Mono인 이유

 이전글중에 .Net과 관련된 글들이 있습니다. Unity에서는 사용자가 코드를 작성할 때 분명 C#(아주 예전에는 자바스크립트도 사용했다죠)을 주로 사용합니다. 아니 C#을 사용한다면 .Net기반에서 돌아야 하는 거 아닌가?라는 의문이 든다면, 매우 정상입니다. 물론 C#은 .Net기반으로 돌아갑니다. 하지만 Unity엔진에 대해서 생각해 보도록 하죠. Unity는 대표적인 멀티 크로스 플랫폼을 제공하는 엔진입니다. 이전 글에서 이런 내용이 있었죠.

 윈도우 개발에 관해서는 굉장한 .Net Framework이지만 명백한 한계가 존재했습니다. 웹과 모바일 생태계로 이전되면서, 크로스 플랫폼 시대가 열리자 윈도우 외에는 제공하지 않는다 것이 한계점으로 부각되었습니다.

 네, 윈도우 외에는 제공되지 않는 제약사항은 멀티 크로스 플랫폼을 제공해야 하는 Unity엔진에게는 치명적이었습니다. .Net Framework만으로는 서비스할 수 없었습니다. 그렇다고 당시 오픈소스도 아니었던 .Net Framework가 멀티 크로스 플랫폼을 제공할리 없었죠. 이때 채택된 것이 Mono project였습니다.


Mono project

 그렇다면 Mono project는 무엇일까요? 위키의 설명에는 다음과 같이 설명되어 있습니다.

 모노(영어: Mono)는 C# 컴파일러와 공통 언어 런타임을 포함하여, Ecma 표준을 준수하는 닷넷 프레임워크의 오픈 소스 버전이다.

 설명 그대로 ECMA에 등록된 .Net Framework의 스펙을 분석하여, 크로스 플랫폼을 지원하도록 만든 프로젝트입니다. Unity에서 채택하기 딱 좋은 시스템이었던 거죠. 

[그림1]모노 아키텍처의 다이어그램

 위 그림을 보면, .Net Framework와 동작 방식이 동일합니다. .Net Framework를 크로스 플랫폼을 제공하도록 만든 것이기 때문에 JIT컴파일로 작동합니다.


마치며

 모바일 플랫폼이 64bit 아키텍쳐를 지원하면서, 이제는 Mono방식으로만 빌드할 수 없다고 합니다. 엔진에서 소스코드를 실행할 때는 Mono방식으로 진행되며, 빌드 시에는 32bit 아키텍처만 지원합니다. 이제는 .Net또한 크로스 플랫폼을 제공하며 Unity에서도 64bit 아키텍처를 지원하는 Mono 라이선스를 취득할 필요도 없기에 il2cpp이라는 빌드 방식을 지원합니다. 다음에는 il2cpp빌드 방식을 다뤄보려 합니다.

 


리소스 출처

[그림1] : Mono project 위키 백과

반응형
LIST