Android Studioによりネイティブプラグインを作成し、Unityに作成したネイティブプラグインを実装し、新規プロジェクトを作成して、Android携帯にネイティブプラグインとゲームオブジェクトを転送して実行します。このブログは「Unityで使用するAndroidのネイティブプラグインの作成(2026/01/16) – Unity編」に続きます。古いバージョンでのネイティブプラグインの作成は、「Unityで使用するAndroidのネイティブプラグインの作成(2024/01/06) – Android編」に示します。
- Android開発環境:Android Studio Otter 2 Feature Drop | 2025.2.2
Android Studioによるネイティブプラグインの作成
Android Studioにより次の手順でネイティブプラグイン「unitylibrary-release.aar」を作成します。
- Android Studioで「No Activity」を選択します。
- 新規プロジェクト「UnityPlugin2601」を作成します。
- 作成した新規プロジェクト「UnityPlugin2601」を選択して、File メニューから「 New 」→ 「New Module」を選択し、開いたダイアログで「Android Library」を選択します。
- ライブラリモジュール「unitylibrary」を作成します。
- File メニューから「Project Structure…」を選択します。
- 開いたダイアログの左メニュー「Modules」を選択して、最初に作られた「app」を削除します。
- Unityがインストールされている次のフォルダのUnityクラスライブラリ「classes.jar」を取得します。Unityクラスライブラリ「classes.jar」が見つからない場合は、「 Unityで作成したゲームをAndroid携帯で実行(2026/01/16)」に示すAndroid用にゲームビルドできる環境が構築されていることを確認します。
- 次のように、作成したプロジェクトフォルダ内の「libs」にドラッグ&ドロップにより追加します。
- モジュールレベル「unitylibrary」のbuild.gradleにUnityクラスライブラリ「classes.jar」を次のように追加し、右上の「Sync Now」ボタンをクリックして、Gradleの変更を適用します。
- モジュールレベル「unitylibrary」のbuild.gradle.ktsを次のようになります。
- 次のようにJavaクラスを新規追加します。名称を「UnityPlugin」、パッケージ名を「com.tomosoft.unitylibrary」「UnityPlugin2601\unitylibrary\src\main\java\com\tomosoft\unitylibrary」とします。
- 作成した「UnityPlugin 」に次のコードを記述します。
- viewメニューから「Tool Windows」を選択して「Build Variants」をクリックします。
- 表示されたBuild Variants画面でReleaseにします。
- Buildメニューから「Assemble Selected Modules」をクリックし、作成したプラグインをAARファイルとしてビルドします。
- ビルドが完了すると、次のように「・・・/UnityPlugin/unitylibrary/build/outputs/aar」にAARファイル「unitylibrary-release.aar」が生成されます。
「...6000.3.2f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes」
compileOnly(files("libs/classes.jar"))
・・・
dependencies {
compileOnly(files("libs/classes.jar"))
implementation(libs.appcompat)
implementation(libs.material)
testImplementation(libs.junit)
androidTestImplementation(libs.ext.junit)
androidTestImplementation(libs.espresso.core)
}
エラーになる場合は、設定ファイルが build.gradle (Groovy) ではなく build.gradle.kts (Kotlin Script) になっていることを確認します。
シーンに存在するオブジェクト「UnityTest」のメソッド「FromAndroid」にメッセージ「”UnityTest”+パラメータとして受けとった文字列」を送信します。
UnitySendMessage("GameObject名","関数名","引数");
メッセージを介して渡せるのは文字列だけなので、複雑な結果を渡したい場合にはシリアライズ/デシリアライズする必要があります。
package com.tomosoft.unitylibrary;
import com.unity3d.player.UnityPlayer;
public class UnityPlugin {
// C/C++ からも呼び出しやすい static メソッドラッパ
public static String sendToUnity(String gameObject, String method, String message) {
UnityPlayer.UnitySendMessage(gameObject, method, message);
return "UnityPlugin2601: " + message;
}
}
Android Studio Flamingo では「Make Module ‘UnityPlugin2401.unitylibrary.main’」になっていましたが、「Assemble Selected Modules」になっています。これは、新しいUI「IntelliJ New UI」やGradleの仕様変更に伴うため。











