C# スクリプトから Java コードを呼び出すために、Unity は C++ を通じて Android Java Native Interface (JNI) と通信する C# API を提供します。Unity は、JNI を使用して Java コードと相互作用するために使用できる低レベルと高レベルの両方の API を提供します。
低レベルの AndroidJNI クラスは、JNI 呼び出しをラップして、JNI メソッドに直接マップする静的メソッドを提供します。AndroidJNIHelper API は、主に高レベルの API で使用されるヘルパー機能を提供しますが、特定の状況で役に立つことがあります。
高レベルの AndroidJavaObject、AndroidJavaClass、AndroidJavaProxy の API は、JNI 呼び出しに必要な多くのタスクを自動化します。また、キャッシュを利用して Java への呼び出しを高速化します。 AndroidJavaObject
と AndroidJavaClass
の組み合わせは、 AndroidJNI
と AndroidJNIHelper
の上に構築されていますが、Java クラスの静的メンバーにアクセスするために使える静的メソッドなどの追加機能が含まれています。
AndroidJavaObject
と AndroidJavaClass
のインスタンスは、それぞれjava.lang.Object とjava.lang.Class のインスタンスと 1 対 1 の対応関係を持っています。これらは、Java/Kotlin のコードとの 3 種類のインタラクションが可能です。
各インタラクションには静的バージョンもあります。