Version: 2023.1
言語: 日本語
Unity のデフォルトのアクティビティを拡張する
Android プレイヤーのコマンドライン引数を指定する

カスタムアクティビティの作成

Unity のデフォルトのアクティビティを拡張するには、独自のカスタムアクティビティを作成し、それをアプリケーションのエントリーポイントに設定します。そのためのプロセスは以下の通りです。

  1. UnityPlayerActivity クラスを継承した新しいアクティビティを作成します。
  2. 新しいアクティビティを最終的な Unity Android アプリケーションに配信するプラグインを作成します。
  3. Android アプリマニフェスト をオーバーライドして、新しい activity をアプリケーションのエントリーポイントとして設定します。

この後、アクティビティにカスタムビヘイビアを実装して、Unity と Android の間の相互作用を制御できます。

新しいアクティビティの作成

新しいアクティビティを作成する手順は以下のとおりです。

  1. Assets フォルダーに、新しい Java (.java) または Kotlin (.kt) ファイルを作成します。
  2. 新しいファイルでは、UnityPlayerActivity を継承するクラスを作成します。
  3. 新しいクラスでは、アクティビティに持たせたいカスタム動作を実装するために、さまざまな基本アクティビティメソッドをオーバーライドします。詳細については、Android の Activity ドキュメントを参照してください。

スクリプトサンプル

次のコードサンプルは、複数の関数をオーバーライドするアクティビティの例を示しています。

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() を呼び出す代わりに、この例はバックボタンのイベントを無視します
    // super.onBackPressed();
  }
}

アクティビティのプラグインを作成

Unity Android アプリケーションのカスタムアクティビティを使用するには、アクティビティを含むプラグインを作成する必要があります。アクティビティは Java または Kotlin で記述されているため、次のいずれかのタイプのプラグインを使用する必要があります。

1 つのプロジェクトにカスタムアクティビティを作成する場合は、Java と Kotlin のソースプラグインを使用します。ソースプラグインを作成するには、プロジェクトの Assets フォルダーにソースファイルを直接配置します。

アクティビティを複数のプロジェクトで再利用したり、他の人に配布したい場合は、Android Archive (AAR) または JAR プラグインを使用してください。1 つの AAR または JAR プラグインファイルを管理することで、複数のプロジェクトに機能を提供しやすくなります。

プラグインを開発している間は Android Library プロジェクトを使用し、実装が完了し複数のプロジェクトで使用するとき、または他の人に配布するときは Android Archive プラグインにコンパイルします。

プラグインを作成したら、アクティビティファイルを加えます。

新しいアクティビティをアプリケーションのエントリーポイントに設定

After you create an activity and add it to a plug-in, you can set it as the application entry point. To do this, modify the Android Manifest and set the name attribute of the activity element to the class name of your custom activity.

以下の Android マニフェストの例は、この方法を示しています:

<?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="com.YourPackage.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>
Unity のデフォルトのアクティビティを拡張する
Android プレイヤーのコマンドライン引数を指定する