Version: Unity 6.0 (6000.0)
언어 : 한국어
iOS용 네이티브 플러그인 호출
자동화된 플러그인 통합

네이티브 코드에서 콜백

Unity iOS는 다음 방법 중 하나를 통해 제한된 네이티브-관리형 콜백 기능을 지원합니다.

팁: 관리형-비관리형 호출은 iOS에서 프로세서를 많이 사용합니다. 프레임당 여러 개의 네이티브 메서드를 호출하지 않는 것이 좋습니다.

UnitySendMessage 사용

UnitySendMessage는 다음과 같습니다.

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

다음의 세 가지 파라미터가 있습니다.

  • 타겟 게임 오브젝트의 이름
  • 해당 오브젝트에 대해 호출하는 스크립트 메서드
  • 호출된 메서드에 전달할 메시지 문자열

UnitySendMessage에는 다음과 같은 제한 사항이 있습니다.

  1. 네이티브 코드에서는 void MethodName(string message); 서명에 해당하는 스크립트 메서드만 호출할 수 있습니다.
  2. UnitySendMessage로의 호출은 비동기적이고 1프레임이 지연됩니다.
  3. 둘 이상의 게임 오브젝트가 같은 이름을 가진 경우 UnitySendMessage를 사용할 때 충돌이 발생할 수 있습니다.

델리게이트 사용

델리게이트를 사용하는 경우 C# 측의 메서드는 정적이어야 하며 MonoPInvokeCallback 속성이 표시되어 있어야 합니다.

델리게이트를 사용하려면 다음 단계를 따르십시오.

  1. 메서드를 델리게이트로 외부 메서드에 전달합니다.
  2. 해당 서명이 있는 함수에 대한 포인터를 허용하는 함수로 네이티브 코드에 외부 메서드를 구현합니다.

그러면 네이티브 코드의 함수 포인터가 C#의 정적 메서드를 가리킵니다.

이 메서드에 대한 C# 코드는 다음과 같은 모습입니다.

delegate void MyFuncType();

[AOT.MonoPInvokeCallback(typeof(MyFuncType))]

static void MyFunction() { }

[DllImport ("__Internal")] 

static extern void RegisterCallback(MyFuncType func);

그런 다음 콜백을 수락하는 C 코드는 다음과 같은 모습입니다.

typedef void (*MyFuncType)();

void RegisterCallback(MyFuncType func) {}

참고: 네이티브 메서드에서 반환된 문자열 값이 UTF–8로 인코딩되고 힙에 할당되었는지 확인합니다.

추가 리소스

iOS용 네이티브 플러그인 호출
자동화된 플러그인 통합