Szukaj…


Wprowadzenie

Ten temat jest pierwszą częścią serii poświęconej tworzeniu wtyczek dla systemu Android dla Unity. Zacznij tutaj, jeśli masz mało doświadczenia w tworzeniu wtyczek i / lub systemu operacyjnego Android.

Uwagi

Dzięki tej serii intensywnie korzystam z zewnętrznych linków, które zachęcam do lektury. Chociaż zostaną tu zawarte sparafrazowane wersje odpowiednich treści, może się zdarzyć, że dodatkowe czytanie pomoże.


Począwszy od wtyczek na Androida

Obecnie Unity oferuje dwa sposoby wywoływania natywnego kodu Androida.

  1. Napisz rodzimy kod Androida w Javie i wywoływaj te funkcje Java za pomocą C #
  2. Napisz kod C #, aby bezpośrednio wywoływać funkcje wchodzące w skład systemu operacyjnego Android

Do interakcji z rodzimym kodem Unity udostępnia niektóre klasy i funkcje.

  • AndroidJavaObject - jest to klasa podstawowa zapewniana przez Unity do interakcji z natywnym kodem. Prawie każdy obiekt zwrócony z kodu natywnego może być przechowywany jako i AndroidJavaObject
  • AndroidJavaClass - dziedziczy z AndroidJavaObject. Służy to do odwoływania się do klas w twoim natywnym kodzie
  • Pobierz / Ustaw wartości instancji obiektu rodzimego oraz statyczne wersje GetStatic / SetStatic
  • Call / CallStatic do wywoływania rodzimych funkcji niestatycznych i statycznych


Zarys tworzenia wtyczki i terminologii

  1. Napisz rodzimy kod Java w Android Studio
  2. Wyeksportuj kod do pliku JAR / AAR (tutaj kroki dla plików JAR i AAR )
  3. Skopiuj plik JAR / AAR do projektu Unity w Assets / Plugins / Android
  4. Napisz kod w Unity (zawsze tutaj C #), aby wywoływać funkcje we wtyczce

Pamiętaj, że pierwsze trzy kroki dotyczą TYLKO, jeśli chcesz mieć natywną wtyczkę!

Odtąd będę odnosił się do pliku JAR / AAR jako wtyczki natywnej , a skrypt C # jako opakowanie C #



Wybieranie metod tworzenia wtyczek

Od razu widać, że pierwszy sposób tworzenia wtyczek jest długi, więc wybór trasy wydaje się być dyskusyjny. Jednak metoda 1 jest JEDYNYM sposobem wywoływania niestandardowego kodu. Jak więc wybrać?

Mówiąc najprościej, robi twoja wtyczka

  1. Zaangażuj niestandardowy kod - wybierz metodę 1
  2. Wywołać tylko natywne funkcje Androida? - Wybierz metodę 2

Proszę NIE próbować „miksować” (tj. Części wtyczki przy użyciu metody 1, a druga przy użyciu metody 2) dwóch metod! Chociaż jest to całkowicie możliwe, często jest niepraktyczne i bolesne w zarządzaniu.

UnityAndroidPlugin.cs

Utwórz nowy skrypt C # w Unity i zastąp jego zawartość następującymi

using UnityEngine;
using System.Collections;

public static class UnityAndroidPlugin {

}

UnityAndroidNative.java

Utwórz nową klasę Java w Android Studio i zastąp jej zawartość następującymi

package com.axs.unityandroidplugin;
import android.util.Log;
import android.widget.Toast;
import android.app.ActivityManager;
import android.content.Context;


public class UnityAndroidNative {


}

UnityAndroidPluginGUI.cs

Utwórz nowy skrypt C # w Unity i wklej te treści

using UnityEngine;
using System.Collections;

public class UnityAndroidPluginGUI : MonoBehaviour {

    void OnGUI () {
        
    }

}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow