ドキュメント

Unity Engine

Unity Engine

コード例:C# スクリプトからの Java/Kotlin コードのコール

Unity プロジェクトに Java/Kotlin 機能を統合するコード例を参照してください。
読み終わるまでの所要時間 5 分最終更新 1日前

Unity は、
AndroidJavaObject
、
AndroidJavaClass
、
AndroidJavaProxy
、
AndroidApplication
などの高レベル API を提供し、C# スクリプトから Java/Kotlin コードと対話することができます。
以下のコード例は、これらの API の使用方法を示しています。

例 1: Java 文字列のハッシュコードの取得

以下のコード例では、文字列で初期化された java.lang.String のインスタンスを作成し、その文字列のハッシュ値を取得します。
using UnityEngine;public class JavaExamples{ public static int GetJavaStringHashCode(string text) { using (AndroidJavaObject jo = new AndroidJavaObject("java.lang.String", text)) { int hash = jo.Call<int>("hashCode"); return hash; } }}
以下の例は、
  1. java.lang.文字列を表す
    AndroidJavaObject
    を作成します。
  2. AndroidJavaObject
    コンストラクターは、インスタンスを構築するクラスの名前である、少なくとも 1 つのパラメーターを取ります。クラス名の後のパラメーターは、オブジェクトのコンストラクターコール用です。この場合は、
    GetJavaStringHashCode
    からの
    text
    パラメーターです。
  3. 文字列のハッシュ コードを取得するために hashCode() を呼び出します。このコールは、
    Call
    に
    int
    ジェネリック型パラメーターを使用します。これは、
    hashCode()
    がハッシュ コードを整数として返すためです。
注
ネスト状の Java クラスをインスタンス化するためにドット付き表記を使用することはできません。内部クラスのインスタンス化には、
$
セパレーターを使用する必要があります。例えば、
LayoutParams
クラスが
ViewGroup
クラスにネストされている「
android.view.ViewGroup$LayoutParams
または
android/view/ViewGroup$LayoutParams
を使用」などです。

例 2: アプリケーションのキャッシュディレクトリの取得

以下のコード例では、C# で
AndroidApplication
クラスを使用して現在のアプリケーションのキャッシュディレクトリを取得します。
using UnityEngine;using UnityEngine.Android;public class JavaExamples{ public static string GetApplicationCacheDirectory() { using var javaFile = AndroidApplication.currentActivity.Call<AndroidJavaObject>("getCacheDir"); var cacheDirectory = javaFile.Call<string>("getCanonicalPath"); return cacheDirectory; }}
以下の例は、
  1. 明示的に
    AndroidJavaClass
    または
    AndroidJavaObject
    インスタンスを作成せずに、
    AndroidApplication.currentActivity
    を使用して現在の Android アクティビティにアクセスします。
  2. Activity オブジェクトで getCacheDir() を呼び出します。これは、キャッシュディレクトリを表す File オブジェクトを返します。
  3. File オブジェクトの getCanonicalPath() を呼び出すと、キャッシュディレクトリを文字列として取得できます。
注
この例はリファレンス目的です。代わりに、アプリケーションのキャッシュとファイルディレクトリにアクセスするには、application.temporaryCachePath と application.persistentDataPath API を使用します。

追加リソース