Unity iOS는 다음 방법 중 하나를 통해 제한된 네이티브-관리형 콜백 기능을 지원합니다.
팁: 관리형-비관리형 호출은 iOS에서 프로세서를 많이 사용합니다. 프레임당 여러 개의 네이티브 메서드를 호출하지 않는 것이 좋습니다.
UnitySendMessage는 다음과 같습니다.
UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");
다음의 세 가지 파라미터가 있습니다.
UnitySendMessage에는 다음과 같은 제한 사항이 있습니다.
void MethodName(string message); 서명에 해당하는 스크립트 메서드만 호출할 수 있습니다.UnitySendMessage로의 호출은 비동기적이고 1프레임이 지연됩니다.UnitySendMessage를 사용할 때 충돌이 발생할 수 있습니다.
델리게이트를 사용하는 경우 C# 측의 메서드는 정적이어야 하며 MonoPInvokeCallback 속성이 표시되어 있어야 합니다.
델리게이트를 사용하려면 다음 단계를 따르십시오.
그러면 네이티브 코드의 함수 포인터가 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로 인코딩되고 힙에 할당되었는지 확인합니다.