JAR plug-ins
Asli (C++) plug-ins untuk Android

Memperpanjang UnityPlayerActivity Kode Java

Bagian di halaman ini:

Memperpanjang file UnityPlayerActivity

Ketika Anda mengembangkan aplikasi Unity Android, Anda dapat menggunakan plug-insSatu set kode yang dibuat di luar Unity yang menciptakan fungsi dalam Unity. Ada dua jenis plug-ins yang dapat Anda gunakan di Unity: Managed plug-ins (diproduksi. Rakitan NET dibuat dengan alat-alat seperti Studio Visual) dan plug-ins asli (pustaka kode asli yang spesifik platform). More info
Lihat di Glossary
untuk memperpanjang kelas standar UnityPlayerActivity (kelas Java utama untuk Unity Player di Android, mirip dengan AppController.mm pada Unity iOS). Aplikasi dapat menimpa semua interaksi dasar antara OS Android dan aplikasi Android Unity.

Untuk menimpa aktivitas default:

  • Buat Activity baru yang berasal dari UnityPlayerActivity (lihat dokumentasi Android pada Activity);
  • Modifikasi Android SDK untuk memiliki Activity baru sebagai titik masuk aplikasi.

Cara termudah untuk mencapai ini adalah untuk mengekspor proyek Anda dari Unity, kemudian membuat modifikasi yang diperlukan untuk kelas UnityPlayerActivity di Android Studio. Atau, Anda dapat membuat kelas baru, memperluasnya, memodifikasi AndroidManifest.xml dalam proyek kesatuanLibrary, dan kemudian mengganti UnityPlayerActivity dengan kelas Anda.

Untuk membuat plug-in dengan Activity baru Anda dan tambahkan ke Anda Proyek, melakukan langkah-langkah berikut:

  1. Memperpanjang file UnityPlayerActivity. Cara terbaik untuk melakukan ini adalah di Android Studio setelah mengekspor proyek Anda dari Unity. Anda kemudian memiliki opsi berikut:
    • Masukkan file .java atau .kt yang berisi kelas aktivitas Anda langsung ke proyek Unity Secara default, file terletak di:
      • macOS::/Applications/Unity/Unity.app/Contents/PlaybackEngines/AndroidPlayer/src/com/unity3d/player
      • Windows:: C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\src\com\unity3d\player
    • Buat pustaka Java yang berisi kelas Anda, kompila dan masukkan file .jar ke proyek Unity Anda
    • Buat perpustakaan Android yang berisi kelas Anda. Anda kemudian dapat menempatkan perpustakaan ini ke proyek Unity Anda dalam kode sumber Anda. Untuk melakukan ini, berikan folder Anda nama dengan ekstensi .androidlib, atau dapat dikompilasi dan menempatkan file .aar di proyek Unity Anda
  2. Buat Android App Manifest baru untuk mengatur Activity baru sebagai titik masuk aplikasi Anda, kemudian letakkan file AndroidManifest.xml di folder Assets/Plugins/Android Proyek Anda.

Menentukan argumen startup Unity dari file UnityPlayerActivity kustom

Ketika Anda memperpanjang UnityPlayerActivity, Anda dapat override String UnityPlayerActivity.updateUnityCommandLineArguments (String cmdLine) untuk melewati argumen startup ke Unity.

UnityPlayerActivity memanggil metode ini selama startup. Ini menerima argumen baris perintah saat ini, yang dapat null atau kosong, dan mengembalikan string baru argumen baris perintah untuk lulus ke Unity.

Untuk gambaran umum antarmuka baris perintah Unity, lihat argumen baris perintah.

Contoh berikut menunjukkan cara menggunakan ini untuk memilih API Grafik berdasarkan perangkat saat ini:

package com.company.product;
import com.unity3d.player.UnityPlayerActivity;
import android.os.Bundle;
import android.os.Build;

public class OverrideExample extends UnityPlayerActivity {
    private boolean preferVulkan() {
        // Use Vulkan on Google Pixel devices
        if (Build.MANUFACTURER.equals("Google") && Build.MODEL.startsWith("Pixel"))
            return true;
        else
            return false;
    }

    private boolean preferES2() {
        // Use OpenGL ES 2.0 on devices that run Android 5.1 or older
        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1)
            return true;
        else
            return false;
    }

    private String appendCommandLineArgument(String cmdLine, String arg) {
        if (arg == null || arg.isEmpty())
            return cmdLine;
        else if (cmdLine == null || cmdLine.isEmpty())
            return arg;
        else
            return cmdLine + " " + arg; 
    } 

    @Override protected String updateUnityCommandLineArguments(String cmdLine)
    {
        if (preferVulkan())
            return appendCommandLineArgument(cmdLine, "-force-vulkan");
        else if (preferES2())
            return appendCommandLineArgument(cmdLine, "-force-gles20");
        else
            return cmdLine; // let Unity pick the Graphics API based on PlayerSettings
    }

    @Override protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
    }
}

File contoh UnityPlayerActivity

Berikut ini adalah contoh dari file 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();
  }
}

AndroidManifest.xml yang sesuai mungkin terlihat seperti berikut:

<?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>

Untuk membuat plug-in dengan Aktivitas baru Anda dan tambahkan ke Anda Proyek, Anda harus melakukan langkah-langkah berikut:

  1. Memperpanjang file UnityPlayerActivity. Ini dilakukan terbaik di Android Studio setelah mengekspor proyek dari Unity. Ada beberapa pilihan:
    • File .java atau .kt yang berisi kelas aktivitas Anda dapat dimasukkan ke dalam proyek Unity.
    • Buat perpustakaan Java yang berisi kelas Anda, kompila dan tuntaskan berkas .jar ke proyek Unity.
    • Buat perpustakaan Android mengandung kelas Anda; perpustakaan ini dapat dimasukkan ke dalam proyek Unity dalam kode sumber dari (oleh naming folder untuk memiliki .androidlib "ekstensi") atau dapat dikompilasi dan mengakibatkan .aar dimasukkan ke dalam proyek Unity.
  2. Buat Android App Manifest baru untuk mengatur Aktivitas baru sebagai titik masuk aplikasi Anda, kemudian letakkan file AndroidManifest.xml di folder Assets/Plugins/Android dari Proyek Anda.

  • Ditambahkan sampel kode baru pada 2019. 2. di
  • Diperbarui AndroidManifest contoh untuk 2019.3 Unity dan up
JAR plug-ins
Asli (C++) plug-ins untuk Android