Метод доступа из плагина Android в единстве - PullRequest
0 голосов
/ 05 февраля 2019

Это довольно просто, но я не добьюсь успеха в его реализации из официальных документов по Unity и видеоуроков YouTube, поэтому я спросил.

Я хочу получить доступ к методам из уже созданного плагина aar,По умолчанию это плагин для Android.Плагин имеет следующий код:

package alarm.company.com.unity;

public class myPlugin {

    public String myTest(int i){
        return "Hello your string number is: "+i;
    }

}

скомпилированный плагин aar копируется в папку Unity.Вот код c # для доступа к этому методу:

const string PluginName = "alarm.company.com.unity.myPlugin";
static AndroidJavaClass _pluginClass;
static AndroidJavaClass _pluginInstance;

public Text text;

// Start is called before the first frame update
void Start()
{

    AndroidJavaClass plugin = new AndroidJavaClass(PluginName);
    string s = plugin.CallStatic<string>("myTest", 9);
    print(s);
    text.text = s;

}

text назначен, и этот скрипт помещен в основную камеру.Но я не получаю никакого текста обратно или текстовый объект не изменяется при работе в эмуляторе.Как это можно решить?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Некоторые советы при работе с плагинами для единства:

  1. Использовать систему сборки Gradle.Он генерирует файл mainTemplate в плагинах / Android.Вы можете отредактировать этот файл и установить исходный код Java для своих классов Java, чтобы вам не нужно было генерировать aar каждый раз, когда вы хотите построить:

    sourceSets 
    {
        main
        {
            java
            {
                srcDirs = ['src']
                srcDirs += ['E:/AndroidStudioProjects/PathToJavaClasses']
            }
        }
    }
    
  2. Если вы хотите отправитьчто-то от кода Java до единства вы должны расширить свою деятельность от единства и вызвать метод UnitySendMessage

    public class MyUnityPlayerActivity extends UnityPlayerActivity{
        public void SendUnityMessage()
        {
             UnityPlayer.UnitySendMessage(UnityGameObjectName, UNITY_FUNCTION_NAME, 
             params);
        }
    }
    
0 голосов
/ 05 февраля 2019

Разработка плагинов для Unity сначала немного сложна, но, как только вы это сделаете, она довольно мощная.

Пара вещей.

1) Вы используете класс AndroidJavaClass и пытаетесь вызвать нестатический метод в Java.Ваш метод в вашем плагине должен быть статическим, если вы хотите использовать этот класс.

2) В противном случае вам нужно будет использовать AndroidJavaObject для создания вашего класса, и тогда вы сможете вызывать свою функцию.

Надеюсь, это поможет!

Пример использования нестатического кода:

Код Unity

   using (AndroidJavaObject leetPlugin = new AndroidJavaObject("alarm.company.com.unity.myPlugin")){
        string s = leetPlugin.Call("myTest", 9);
        print(s);
        text.text = s;
    } 

Код Android

public void myTest(int value) {
   return "Your value is " + value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...