Action disabled: source

iOS를 위한 빌드 플러그인 Building Plugins for iOS

이 페이지는 iOS 플랫폼을 위한 Native Code Plugins을 설명합니다.

iOS를 위한 네이티브 플러그인으로 앱 빌드하기 Building an Application with a Native Plugin for iOS

  1. C# 파일 안에 사용자 extern method를 다음과 같이 정의합니다:
[DllImport ("_Internal")]
private static extern float FooPluginFunction ();
  1. 에디터를 iOS 빌드 목표로 설정합니다
  2. 사용자 본래 구현을 생성된 Xcode프로젝트의 "Classes" 폴더에 추가합니다 (프로젝트가 업데이트 될때 이 폴다는 덮어씌여지지 않습니다. 그러나 사용자 본래 코드를 백업하는 것을 잊지 마세요).

플러그인 구현을 위해 C++ (.cpp) 또는 Objective-C (.mm)를 이용한다면 name mangling issues를 피

하기 위해 함수가 C링키지와 함께 선언되도록 해야합니다.

extern "C" {
  float FooPluginFunction ();
} 

C#에서 사용자 플러그인 사용하기 Using Your Plugin from C#

iOS 네이티브 플러그인은 실제 장치에서만 불릴수 있으므로 모든 네이티브 코드 함수를 추가적인 C#코드 레이어로 감싸세요. 이

코드는 Application.platform으로 확인할수 있으며 실제 장치에서 실행될때만 본래 함수를 부를수 있고 에디터에서 실행될 때는 모형 값을 리

턴합니다. Bonjour 브라우저 샘플 프로그램을 확인하세요.

네이티브 코드에서 C# / JavaScript 부르기 Calling C# / JavaScript back from native code

유니티 iOS는 제한적인 native→managed callback 기능을 UnitySendMessage을 통하여 지원합니다:

UnitySendMessage("GameObjectName1", 
 
"MethodName1", "Message to send");

이 함수는 세개의 파라미터를 가지고 있습니다: 게임 객체 이름, 부를 게임 객체 스크립트 함수, 불려진 함수에 넘겨줄 메세지. 알아야할 제한은:

  1. 다음의 시그니쳐와 사응하는 스크립트 함수만이 본래 코드에서 불려질 수 있습니다:
     function MethoName(message:string)
  2. UnitySendMessage 으로의 콜은 비동기이고 한 프레임의 딜레이가 있습니다.

자동화된 플러그인 통합

유니티 iOS는 제한적인 자동화된 플러그인 통합을 지원합니다.

  1. Assets/Plugins/iOS에 있는 모든 .a,.m,.mm,.c,.cpp는 자동으로 생성된 Xcode 프로젝트로 통합 됩니다.
  2. 통합은 symlinking 파일을 통해 가능한데 Assets/Plugins/iOS에서 마지막 목적지로 통합하며 이것은 몇가지 workflow에 영향을 줄것입니

다.

  1. Xcode 프로젝트 트리에 .h 파일은 포함되지 않았지만 그들은 마지막 목적지 파일 시스템에 나타나고 그래서.m/.mm/.c/.cpp의 컴파일

을 가능하게 합니다.

_주의:_ 하위 폴더는 지원되지 않습니다.

iOS 팁

  1. Managed → unmanaged 콜은 iOS에서 상당이 비쌉니다. 프레임당 여러개의 기본 함수를 부르지 않도록하세요.
  2. 위에서 말한 것처럼 사용자 기본 함수를 장치에서 실제 코드를 부르고 에디터에서 모의 값을 리턴하는 추가적인 C# 레이어로 감싸세요.
  3. 기본 함수에서 리턴된 스트링 값은 UTF-8로 인코딩되고 힙에 할당되어야 합니다. Mono marshaling 콜은 이것을 위해서는 무료입니다.
  4. 위에서 언급한것 처럼 Xcode의 "Classes" 폴더는 사용자 기본 코드를 두기에 좋은데 왜냐하면 프로젝트가 업데이트되도 덮어씌여지지 않기 때문입니다.

#기본 코드를 저장하기 좋은 또다른 곳은 에셋 폴더나 그 하위의 다른 폴더들 입니다. Xcode프로젝트에서 참조를 기본 코드 파일에 추가합니다. "Classes" 하위 폴더에서 오른쪽 클릭 후 "Add→Existing files…"를 선택합니다.

예제 Examples

Bonjour 브라우저 샘플

네이티브 코드 플러그인의 간단한 사용 예제는 여기에서 찾을 수 있습니다.

이 샘플은 어떻게 Objective-C 코드가 Unity iOS 애플리케이션에서 호출될 수 있는지 잘 보여줍니다. 이 애플리케이션을 굉장히 단순한 Bonjour 클라이언트를 사용합니다. 이 애플리케이션은 Unity iOS 프로젝트(플러그인/Bonjour.cs 는 네이티브 코드로의 C# 인터페이스이며 BonjourTest.js는 그 애플리케이션 로직을 이행하는 JS 스크립트입니다)와 빌드된 XCode 프로젝트에 추가되었을 네이티브 코드(에셋/코드)로 구성되어 있습니다

역링크