Al desarrollar una aplicación Unity para Android, es posible ampliar la clase UnityPlayerActivity estándar (la clase Java principal para Unity Player en Android, similar a AppController.mm en Unity iOS) mediante el uso de plug-ins. Una aplicación puede anular todas y cada una de las interacciones básicas entre el sistema operativo Android y la aplicación Unity de Android.
Se requieren dos pasos para anular la actividad predeterminada:
Cree la nueva Actividad que se deriva de UnityPlayerActivity;
Modifique el Manifiesto de Android para tener la nueva actividad como punto de entrada de la aplicación.
La manera más fácil de lograr esto es exportar su proyecto y realizar las modificaciones necesarias en la clase UnityPlayerActivity en Android Studio.
Para hacer un plug-in con su nuevo código de actividad y agregarlo a su proyecto de Unity, debe realizar los siguientes pasos:
Extienda la UnityPlayerActivity. El archivo UnityPlayerActivity.java se encuentra en /Applications/Unity/Unity.app/Contents/PlaybackEngines/AndroidPlayer/src/com/unity3d/player en Mac y C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\src\com\unity3d\player en Windows. Para extender UnityPlayerActivity, ubique las classes.jar incluido con Unity. Se encuentra en la carpeta de instalación (generalmente C:\Program Files\Unity\Editor\Data (on Windows) o /Applications/Unity (on Mac)) en una subcarpeta llamada PlaybackEngines/AndroidPlayer/Variations/mono or il2cpp/Development or Release/Classes/. A continuación, agregue classes.jar al classpath utilizado para compilar la nueva actividad. Compile su archivo fuente de actividad y empaquételo en un paquete JAR o AAR, y cópielo en su carpeta de proyecto.
Cree un nuevo Manifiesto de Android para establecer la nueva actividad como el punto de entrada de su aplicación. Coloque el archivo AndroidManifest.xml en la carpeta Assets/Plugins/Android de su proyecto.
El siguiente es un ejemplo del archivo 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) {
// call UnityPlayerActivity.onCreate()
super.onCreate(savedInstanceState);
// print debug message to logcat
Log.d("OverrideActivity", "onCreate called!");
}
public void onBackPressed()
{
// instead of calling UnityPlayerActivity.onBackPressed() we just ignore the back button event
// super.onBackPressed();
}
}
And this is what the corresponding AndroidManifest.xml could look like:
<?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>
2017–05–18 Page published with no editorial review - Leave page feedback
Updated features in 5.5