Windows용: TBD(UnityPlugin.m 코드의 99%는 순수 ANSI-C입니다 – 다른 디버그 로깅을 수행하고 다른 메시지 펌프 및 되풀이 타이머를 작성하는 것만으로도 풀 요청을 포크/기여하십시오). “대리자”가 단순히 “콜백 목록”이라고 불리는 경우 모든 것이 처음부터 명확해질 것입니다. 콜백을 할 수있는 또 다른 방법이 있습니까? 다른 방법을 통해 한 가지 방법에 대한 환경 설정이 있어? 코멘트에서 소리! 이제 더 빠른 인터페이스를 확립했습니다. 인터페이스는 확실히 설정하기 위해 더 많은 작업, 읽기 어렵다, 더 오류가 발생하기 쉬운, 그리고 코드에 통합하기 더 어렵다. 빠른 백분율은 인상적이지만 총 CPU 시간을 많이 절약 할 수 있습니까? 위의 테스트 결과는 콜백 호출 1억 개당 밀리초단위로 측정됩니다. 이는 합리적인 게임이나 앱에서 볼 수 있는 것보다 훨씬 더 많은 수치입니다. 나는 당신이 메인 스레드에서 UnitySendMessage ()를 호출 할 수 있다고 생각 – 적어도 위의 하나의 시나리오에서 당신은 안드로이드 UI 작업자 스레드에서 호출하는. 즉, 세 가지 옵션은 모두 콜백 체계를 구현하는 유효한 방법입니다. 그래서, 어느 것이 가장 빠릅니다? 다음 테스트는 하나의 작은 MonoBehaviour로 알아낸다: 테스트 유니티 프로젝트 UnityPluginTest는 단순히 UnityPlugin.cs 스크립트 구성 요소가 첨부된 큐브가 있는 기본 장면입니다.

예제의 실행 결과가 순전히 콘솔 디버그.Log 출력인 경우. 여기에 몇 가지 최상위 정보를 넣어 보겠습니다,하지만 모든 것이 함께 작동하는 방법에 대한 실제 세부 사항에 대한 UnityPlugin.cs 및 UnityPlugin.m의 의견을 읽고, 잘못된 스레드에 다시 호출하여 Unity를 충돌에서 자신을 유지하는 방법, 적절한 설정을 수행하는 방법 / 이러한 기술을 사용하여 네이티브 코드와 Unity/C#간에 실시간 데이터를 흐름하는 경우 대리자 및 콜백 수명 주기를 관리하는 방법 및 복사 오버헤드를 최소화하는 방법(시도)을 수행할 수 있습니다. natbro/UnityPlugin에서 새로운 릴리스에 대한 알림을 원하십니까? 또 다른 옵션은 AndroidJavaProxy를 사용하여 인터페이스 콜백을 구현하는 것입니다. UnitySendMessage를 사용하는 대신 자바 코드에 인터페이스 콜백을 한 다음 AndroidJavaProxy를 사용하여 C #에서이 인터페이스를 구현하고 메시지를 다시 수신하기 위해 Java 메서드에 전달할 수 있습니다. GitHub에이 자습서에서 코드/예제를 제공 해 주셔서 감사 합니다. 나는 항상 다른 사람의 코드를 빗질 할 수있는 감사하고 (희망) 다른 사람으로부터 학습의 보물을 날치기. 🙂 마지막 하나는 C #의 홀수 볼 문자이지만 다른 언어에서는 매우 일반적입니다. 예를 들어 Java의 ActionListener 및 기타 “리스너”는 이 전략을 사용합니다. 간단히 말해, 대리자 대신 인터페이스를 정의한 다음 콜백 함수를 사용하는 대신 클래스를 구현합니다.

세 가지 방법 모두 단일 콜백만 호출할 때 와 비슷한 시간을 갖습니다.