Unity のデフォルトのアクティビティを拡張するには、独自のカスタムアクティビティを作成し、それをアプリケーションのエントリーポイントに設定します。そのためのプロセスは以下の通りです。
UnityPlayerActivity
クラスを継承した新しいアクティビティを作成します。activity
をアプリケーションのエントリーポイントとして設定します。この後、アクティビティにカスタムビヘイビアを実装して、Unity と Android の間の相互作用を制御できます。
新しいアクティビティを作成する手順は以下のとおりです。
.java
) または Kotlin (.kt
) ファイルを作成します。UnityPlayerActivity
を継承するクラスを作成します。次のコードサンプルは、複数の関数をオーバーライドするアクティビティの例を示しています。
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>