ドキュメント

Unity Engine

Unity Engine

Unity の Java インターフェース

C# スクリプトから Java/Kotlin コードをコールために使用できる Unity の Java ネイティブ インターフェース API について説明します。
読み終わるまでの所要時間 4 分最終更新 16時間前

Unity には、C# スクリプトから Java コードと対話する低レベルおよび高レベルの Java ネイティブインターフェース (JNI) API があります。

低レベル API

低レベルの AndroidJNI クラスは JNI 呼び出しをラップし、JNI メソッドに直接マップする静的メソッドを提供します。AndroidJNIHelper API は、主に高レベル API で使用されるヘルパー機能を提供しますが、特定の状況で役立つ場合があります。

高レベル API

高レベルの AndroidJavaObject、AndroidJavaClass、および AndroidJavaProxy クラスは、JNI 呼び出しに必要な多くのタスクを自動化します。また、キャッシュを使用して Java の呼び出しを高速化します。
AndroidJavaObject
と
AndroidJavaClass
の組み合わせは、
AndroidJNI
と
AndroidJNIHelper
の上に構築されていますが、Java クラスの静的メンバーにアクセスするために使用できる静的メソッドなどの追加機能も含まれています。
さらに、Unity はアプリケーションの
currentActivity
、
currentContext
、および
currentConfiguration
のインスタンスへのアクセスを簡単にする AndroidApplication クラスを提供します。このクラスでは、アプリケーションの要件に基づいて、UI またはメインスレッドでのコード実行をデリゲートすることもできます。
AndroidJavaObject
と
AndroidJavaClass
のインスタンスは、それぞれ java.lang.オブジェクトと java.lang.クラスのインスタンスに 1 対 1 でマッピングされます。Java/Kotlin コードとの相互作用には 3 種類あります。
  • メソッドをコールします。
  • フィールドの値を取得します。
  • フィールドの値を設定します。
各インタラクションには静的バージョンもあります。
フィールドの値を取得するか、値を返すメソッドを呼び出す場合は、ジェネリックを使用して戻り値の型を指定します。フィールドの値を設定する場合は、ジェネリックを使用して設定するフィールドのタイプも指定します。値を返さないメソッドには、通常の非ジェネリックバージョンのコールがあります。
重要
任意の 非プリミティブ型 に
AndroidJavaObject
としてアクセスする必要があります。唯一の例外は、Java のプリミティブ型を表さなくても、直接アクセスできる文字列です。

追加リソース