유니티 스크립팅 백엔드 IL2CPP와 Mono2x의 차이점


14

IL2CPP 는 Unity에서 개발 한 스크립팅 백엔드로 일부 플랫폼 용 프로젝트를 빌드 할 때 Mono의 대안으로 사용할 수 있습니다. 참고-IL2CPP는 다음 플랫폼을 구축 할 때만 사용할 수 있습니다.

  • 안드로이드 AppleTV, iOS *, Nintendo 3DS, Nintendo Switch, Playstation 4 Playstation Vita, WebGL *, Windows Store, Xbox One

Android 배포로 전환 한 프로젝트 (유니티 5.2)가 있습니다. 내가 백업에서 내 스크립트를 전환하는 노력 Mono2xIL2CPP하고 저를 보여주는

Andriod의 IL2CPP는 실험적이며 지원되지 않습니다

그래서 간단한 질문은 그것이 여전히 지원되지 않는다면 왜 옵션이 포함되어 있는지, IL2CPP와 Mono2x의 근본적인 차이점은 무엇인가입니다. IL2CPP 스크립팅 백엔드 로 전환 한 이유는 무엇 입니까? 그 무엇 장점과 단점은 ?

또한 Unity 5.5.2에서 체크인했지만 Windows 플랫폼 배포에는 IL2CPP 옵션이 없습니다.

답변:


13

정보는 Unity 버전 2018.2를 기반으로합니다.

IL2CPP에 대한 Unity 매뉴얼 인용 :

IL2CPP ( Intermediate Language To C ++ )는 다양한 플랫폼을위한 프로젝트를 빌드 할 때 Mono의 대안으로 사용할 수있는 Unity 개발 스크립팅 백엔드입니다. IL2CPP ( AOT) 컴파일러 는 Mono 스크립팅 백엔드와 동일한 방식으로 관리 코드 디버깅을 지원합니다.

IL2CPP를 사용하여 프로젝트를 빌드 할 때 Unity는 선택한 플랫폼에 대해 기본 이진 파일 (예 : .exe, apk, .xap)을 만들기 전에 IL 코드를 스크립트 및 어셈블리에서 C ++로 변환합니다. IL2CPP의 일부 용도에는 Unity 프로젝트의 성능, 보안 및 플랫폼 호환성 향상이 포함됩니다.

IL2CPP 및 Mono에 대한 Unity 자습서 인용 :

각 스크립팅 백엔드는 상황에 적합한 선택에 대한 결정에 영향을 미치는 이점과 단점이 있습니다.

IL2CPP :

  • 모노에 비해 코드 생성이 크게 향상되었습니다.
  • C ++에서 스크립트 코드를 위에서 아래로 디버깅 할 수 있습니다.
  • 엔진 코드 스트리핑을 활성화하여 코드 크기를 줄일 수 있습니다.
  • 모노보다 빌드 시간이 길다.
  • AOT (Ahead of Time) 컴파일 만 지원합니다.

모노 :

  • IL2CPP보다 빠른 빌드 시간.
  • JIT (Just In Time) 컴파일로 인해 더 많은 관리되는 라이브러리를 지원합니다.
  • 런타임 코드 실행을 지원합니다.
  • 관리되는 어셈블리 (모노 또는 .net이 생성하는 .dll 파일)를 배송해야합니다.

중요한 포인트 :

  • Android 플레이어 설정의 기본 대상 아키텍처는 IL2CPP 및 모노 스크립팅 백엔드가있는 armv7 및 x86입니다.
  • 모노는 UWP 또는 iOS 11 이상에서 지원되지 않습니다. iOS 플레이어 설정의 기본 아키텍처는 IL2CPP 스크립팅 백엔드가있는 armv7 및 arm64입니다.

  • UWP 빌드는 IL2CPP 및 .NET 만 지원합니다. .NET 스크립팅 백엔드 (더 이상 사용되지 않음)는 Microsoft의 .NET을 사용하여 스크립팅을 강화합니다.


1
귀하의 답변에 누락 된 참조가 있다고 생각합니다. IL2CPP / Mono 목록은 Unity의 IL2CPP & Mono 튜토리얼 페이지 와 동일한 텍스트이며 첫 두 단락은 Unity의 IL2CPP 매뉴얼 페이지 와 동일한 순서로 다른 순서로 표시됩니다. 참조를 포함하도록 답변을 수정하십시오 . 자세한 내용 은 도움말 센터 를 참조하십시오.
sonny

3

IL2CPP는 Unity에서 개발 한 스크립팅 백엔드로 일부 플랫폼 용 프로젝트를 빌드 할 때 Mono의 대안으로 사용할 수 있습니다. IL2CPP를 사용하여 프로젝트를 빌드하기로 선택한 경우 Unity는 네이티브 이진 파일 (.exe, apk, .xap)을 만들기 전에 IL 코드 (CIL-Intermediate Language 또는 Common Intermediate Language라고도 함)를 스크립트 및 어셈블리에서 C ++ 코드로 변환합니다. 예) 선택한 플랫폼의 경우 IL2CPP의 일부 용도에는 Unity 프로젝트의 성능, 보안 및 플랫폼 호환성 향상이 포함됩니다.

출처

IL2CPP는 모노보다 빠른 것으로 추정되는 동등한 * 실행 플랫폼입니다. 이와 관련하여 "실험적" 은 이전 문장에서 "추정 적으로" 라는 단어를 강조합니다 .

실험용 기능은 베타 소프트웨어가 공개적으로 출시되는 것과 같은 이유로 출시됩니다. 소프트웨어는 사용하기에 충분하며 개발자는 광범위한 사용자의 버그 보고서 및 기타 피드백을 원하므로 소프트웨어가 준비된 시점 또는 실제 릴리스.


* IL2CPP는 리플렉션을 통해 순수하게 사용되는 코드에는 작동하지 않습니다. 리플렉션, 직렬화 또는 직접 호출되지 않아 클래스에서 제거 된 클래스에서 제네릭을 사용할 때 발생합니다. Ahead of Time 컴파일 제한을 사용하는 플랫폼에서 현재 동일한 제한 이 Mono에 적용됩니다.


그래서 아직 성숙하지는 않았지만 5.5에 대한 5.2 무경험을 사용하고 있습니다. 또는 5.6. 또한 il2cpp에서 전환해야 할 장단점은 무엇입니까?
Muhammad Faizan Khan

일부 플랫폼에서는 성숙합니다. Unity 5 이전부터는 적어도 IOS가있었습니다. 안드로이드 IL2CPP조차도 최신 버전에서는 실험용으로 표시되지 않았다고 생각합니다. IL2CPP 사용을 시작할 때까지 Unity 4에서 5 로의 점프가 안드로이드에서 더 느리다는 것을 알았습니다. 테스트 장치에서 눈에 띄게 빠릅니다.
Tartle Wizard

1
IL2CPP는 머신 코드 Ahead-of-Time으로 컴파일되므로 generics의 반영 및 사용과 관련 하여 몇 가지 추가 제한 사항이 있습니다 . Mono의 Just-in-Time 컴파일러는 필요한 코드를 즉시 검사하고 생성 할 수있는 정보를 가지고 있지만 AoT의 경우 빌드시 필요한 모든 코드를 쉽게 감지 할 수 있어야합니다.
DMGregory
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.