iOS 2D 텍스처 오버라이드
Unity 리모트

64비트 iOS로 업그레이드

iOS 64비트 지원은 C# 코드로 실행되는 IL2CPP라는 스크립팅 백엔드를 사용하여 구현됩니다.

IL2CPP 런타임은 사전 컴파일러를 가상 컴퓨터와 결합하여 어셈블리를 C++로 변환하는 동시에스탠다드 플랫폼 C++ 컴파일러를 활용하여 네이티브 바이너리를 생성합니다. 그 결과 성능, 플랫폼 호환성 및 유지관리 용이성이 크게 향상됩니다.

IL2CPP는 iOS에서 ARM 64비트로 배포하는 기능을 지원하는 유일한 스크립팅 백엔드이므로, 새 앱을 릴리스하기 위해 Apple 앱 스토어에 배포할 때 필수적입니다.

IL2CPP에 대한 자세한 내용은 Unity 스크립팅의 미래Unity의 Apple iOS 64비트 지원 블로그 게시물을 참조하십시오.

iOS에서 IL2CPP 사용을 시작하는 방법

Player 창의 Scripting Backend 드롭다운 메뉴에서 IL2CPP 를 선택합니다.

스크립팅 백엔드 선택
스크립팅 백엔드 선택

기본적으로 Universal 아키텍처(ARM64ARMv7 모두 포함)용으로 빌드하고, 필요한 경우 Player 창에서 특정 아키텍처로 전환할 수 있습니다. 애플리케이션을 64비트에서 시작하고 실행하려면 다음과 같은 몇 가지 작업을 수행해야 합니다.

  • 테스트하는 데 사용할 64비트 지원 기기가 필요합니다. 이런 기기는 모두 A7 칩 이상이 탑재된 iOS 기기입니다. 현재 iPhone 5S, iPad Air, iPad Mini Retina, iPhone 6, iPhone 6 Plus, iPad Mini 3, 기타 모든 최신 기기가 해당됩니다.
  • 모든 네이티브 플러그인이 64비트를 지원하도록 컴파일되거나 소스 코드로 제공되어야 합니다. 타사 플러그인을 사용하는 경우 플러그인 공급업체에 연락하여 해당 플러그인의 64비트 지원 및 IL2CPP 호환 버전을 요청해야 합니다. 현 시점에는 모든 최신 Prime31 플러그인이 잘 동작합니다.
  • 플러그인 공급업체이거나 자체 네이티브 플러그인을 보유하고 있는 경우 다음 몇 가지 사항을 기억해야 합니다.
    • IL2CPP는 Mono Runtime API와 API 호환이 되지 않습니다(노출되지 않음). 즉, 플러그인에서 mono_* 를 사용하는 경우 함수가 더 이상 링크되지 않습니다. 이 문제를 해결하는 최상의 방법은 관리된 위임/콜백 접근방식으로 전환하며, 관리된 콜백을 플러그인의 네이티브 방향으로 전달하고, 네이티브 데이터나 이벤트가 도착할 때 다시 호출하는 것입니다.
    • 미리 컴파일된 정적 라이브러리(.a 파일)로 제공되는 모든 플러그인에는 이제 ARM64 슬라이스가 포함되어야 합니다.
    • 네이티브 코드/타입 변환을 수행할 때는 이제 포인터와 long의 너비가 64비트고 int의 너비는 여전히 32비트임을 주의해야 합니다.
  • 생성되는 C++ 코드의 양을 최소화하기 위해 IL2CPP는 항상(스트리핑 레벨Disabled 로 설정된 경우에도) 일종의 매니지드 코드 스트리핑을 수행합니다. 때로는 사용자가 이 작업을 도와야 합니다. iOS 플레이어 크기 최적화 매뉴얼에서 link.xml 가이드를 찾아볼 수 있습니다.

문제 해결

  • 질문: 제 코드가 IL2CPP에서 Mono를 사용할 때보다 더 느리게 실행됩니다. 왜 그런가요?
    답변: 코드 성능을 Xcode Release 설정에서 테스트하고 있는지 확인해야 합니다. 그래도 문제가 계속 발생하면 버그 리포트를 제출합니다.
  • 질문: Unity 에서 생성된 Xcode 프로젝트가 컴파일되지 않고 다음과 같은 오류가 발생합니다. Method not found: 'Default constructor not found...ctor() of System.ComponentModel.Int64Converter'.
    답변: 디시리얼라이저와 시리얼라이저에서 종종 .NET Reflection API 를 통해서만 일부 타입을 레퍼런스하고, 이 경우 해당 메서드나 클래스까지도 프로젝트에서 스트립될 수 있습니다. link.xml을 사용하거나 스크립트에서 명시적으로 레퍼런스되는 더미 코드를 도입하여 특정 클래스/메서드가 사용된다는 것을 관리되는 코드 스트리퍼에 알릴 수 있습니다.
  • 질문: Unity 에서 생성된 Xcode 프로젝트에서 컴파일에 실패하고 다른 오류가 발생합니다.
    답변: 모든 플러그인이 ARM64 및 IL2CPP 를 지원하는지 확인하고, 지원되는 경우 버그 리포트를 제출하고 해당 프로젝트를 (또는 프로젝트의 스크립팅 파트만) 버그 리포트에 첨부해 주십시오.

  • 2018–06–14 일부 편집 리뷰를 거쳐 페이지 수정됨
iOS 2D 텍스처 오버라이드
Unity 리모트