AOS
- "currentActivity"로 접근해서 얻는 이유.
Call 함수의 엔진 내부 동작은 달빅VM 쓰레드에 연결된 jnienv의 포인터를 받은 후 GetMethodID 함수를 통해 스트링으로 제공하는 함수 이름에 맞는 함수의 ID를 찾아 실행시켜 줍니다.
매번 GetMethodID를 호출하여 ID를 찾으면 시간이 걸리니 엔진 내부에서는 캐싱 테이블로 빠르게 ID를 찾을 수 있게 제공합니다.
따라서 Call 함수를 부모 클래스의 레퍼런스상에서 호출하더라도 C#의 Reflection 처럼 동작하여 문제 없이 EclipseBasicActivity의 함수를 호출할 수 있게 됩니다.
http://unitystudy.net/bbs/board.php?bo_table=qanda&wr_id=174
- Destroy할때 Dispose 해주자.
- Native 메소드 호출 방법
IOS
- 다른 플러그인 시스템과 마찬가지로 C#과 네이티브 코드는 다른 영역이며, C#에서 네이티브를 호출할 때에는 .NET의 PInvoke 기능을 사용하고, 네이티브에서는 유니티 라이브러리에서 제공하는 UnitySendMessage를 사용하여 C#의 함수를 호출합니다.
PInvoke를 사용하기 위해서는 System.Runtime.InteropServices 네임스페이스를 사용해야하며, [DllImport(“__Internal”)] 프로퍼티를 C#의 static 멤버 함수에 설정하면 Objective C 코드에서 선언된 함수와 일치하게 됩니다.
이 때 Objective C 코드의 함수는 C 스타일로 정의되어야 하며, 이를 위해 함수에 extern “C”키워드를 명시적으로 주어 name mangling 문제가 일어나지 않도록 합니다.
http://www.unitystudy.net/bbs/board.php?bo_table=dustin&wr_id=402 // [모바일] iOS 플러그인 제작
댓글 없음:
댓글 쓰기