네이티브 코드에서 콜백
Understand how to use native-to-managed callback functionality.
읽는 시간 1분최근 업데이트: 한 달 전
Unity iOS는 다음 방법 중 하나를 통해 제한된 네이티브-관리형 콜백 기능을 지원합니다.
팁: 관리형-비관리형 호출은 iOS에서 프로세서를 많이 사용합니다. 프레임당 여러 개의 네이티브 메서드를 호출하지 않는 것이 좋습니다.
UnitySendMessage 사용
UnitySendMessageUnitySendMessage("GameObjectName1", "MethodName1", "Message to send");다음의 세 가지 파라미터가 있습니다.
- 타겟 게임 오브젝트의 이름
- 해당 오브젝트에 대해 호출하는 스크립트 메서드
- 호출된 메서드에 전달할 메시지 문자열
UnitySendMessage- 네이티브 코드에서는 서명에 해당하는 스크립트 메서드만 호출할 수 있습니다.
void MethodName(string message); - 로의 호출은 비동기적이고 1프레임이 지연됩니다.
UnitySendMessage - 둘 이상의 게임 오브젝트가 같은 이름을 가진 경우 를 사용할 때 충돌이 발생할 수 있습니다.
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로 인코딩되고 힙에 할당되었는지 확인합니다.