JAR プラグイン
Android 用ネイティブ(C++)プラグイン

UnityPlayerActivity Java コードの拡張

Unity Android アプリケーションの開発に当たって、プラグインを使って、標準の UnityPlayerActivity クラスを拡張することができます。(これは Android における Unity Player の基本の Java クラスで、 Unity iOS の AppController.mm とおおむね同様のものです。) Android OS と Unity Android アプリケーションの基本的なインタラクションは全て、アプリケーションによるオーバーライドが可能です。

デフォルトのアクティビティをオーバーライドするには、以下の 2 段階の手順を実行します。

  • UnityPlayerActivity; から派生する新しい Activity を作成します。

  • 新しいアクティビティがアプリケーションのエントリーポイントとして使用されるように Android Manifest を修正してください。

これを最も簡単に行うには、プロジェクトをエクスポートし、Android Studio で UnityPlayerActivity クラスに必要な修正を加えます。

新しいアクティビティコードでプラグインを作成し、それを Unity プロジェクトに追加するには、以下の手順を実行してください。

  1. UnityPlayerActivity を拡張します。 UnityPlayerActivity.java ファイルは、 Mac では /Applications/Unity/Unity.app/Contents/PlaybackEngines/AndroidPlayer/src/com/unity3d/player に、 Windows では C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\src\com\unity3d\player にあります。 UnityPlayerActivity を拡張するには、Unity に付属の classes.jar を見付けてください。これは、インストールフォルダー(通常 C:\Program Files\Unity\Editor\Data [Windows] または /Applications/Unity [Mac]) のサブフォルダーである PlaybackEngines/AndroidPlayer/Variations/mono または il2cpp/Development or Release/Classes/ 内にあります。次に、新しいアクティビティのコンパイルに使用されるクラスパスに classes.jar 追加します。アクティビティのソースファイルをコンパイルして JAR または AAR パッケージに含め、それをプロジェクトフォルダーにコピーしてください。

2) Android Manifest を 1 つ新規作成し、この新しいアクティビティアプリケーションのエントリーポイントとして設定します。 AndroidManifest.xml ファイルをプロジェクトの Assets/Plugins/Android フォルダーに配置してください。

以下は、 UnityPlayerActivity ファイルの例です。

OverrideExample.java:
package com.company.product;
import com.unity3d.player.UnityPlayerActivity;
import android.os.Bundle;
import android.util.Log;

public class OverrideExample extends UnityPlayerActivity {
  protected void onCreate(Bundle savedInstanceState) {
    // UnityPlayerActivity.onCreate() を呼び出す
    super.onCreate(savedInstanceState);
    // logcat にデバッグメッセージをプリントする
    Log.d("OverrideActivity", "onCreate called!");
  }
  public void onBackPressed()
  {
    // UnityPlayerActivity.onBackPressed() を呼び出す代わりに、Back ボタンイベントを無視する
    // super.onBackPressed();
  }
}
これに対応する AndroidManifest.xml は以下のようになります。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company.product">
  <application android:icon="@drawable/app_icon" android:label="@string/app_name">
    <activity android:name=".OverrideExample"
             android:label="@string/app_name"
             android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
  </application>
</manifest>



JAR プラグイン
Android 用ネイティブ(C++)プラグイン