Unity -> связь с Android: отладка Java-плагина Android во встроенном - PullRequest
0 голосов
/ 04 июля 2018

Я встроил проект Unity в отдельное приложение для Android - Как я могу отладить вызов AndroidJavaObject в C #, если он встроен (см. SpinningCube.cs ниже)?

Возможно, добавить операторы журналирования в часть C # или присоединить к какому-либо процессу?

-

SpinningCube.cs

public class SpinningCube : MonoBehaviour 
{
    ...

    //Sends dummy data to the receiveResult function in Java
    void SendResultToJava(float value)
    {
        using (AndroidJavaClass javaPlugin = new AndroidJavaClass("com.example.my.button.MyPlugin"))
        {
            AndroidJavaObject pluginInstance = javaPlugin.CallStatic<AndroidJavaObject>("instance");
            pluginInstance.Call("receiveResult", value.ToString());
        }

    }

    //Called from Java
    void TestFunction(string dummy_key)
    {
        float value = (float)0.9999; 
        SendResultToJava(value); //Send the value to Java
    }
}

-

Я подозреваю, что мой плагин для Android com.example.my.button.MyPlugin не настроен или работает неправильно b / c receiveResult(), кажется, никогда не вызывается Unity, и в Android Studio не появляется никаких ошибок.

MainActivity.java ( Cube - это имя объекта)

    ...
    MyPlugin.testInstance = MyPlugin.instance();
    String unity_str = MyPlugin.testInstance.UnitySendMessageExtension("Cube", "testFunction","dummyKey");

MyPlugin.java

    package com.example.my.button;

    import com.unity3d.player.UnityPlayer;

    public final class MyPlugin
    {
        //Make class static variable so that the callback function is sent to one instance of this class.
        public static MyPlugin testInstance;

        public static MyPlugin instance()
        {
            if(testInstance == null)
            {
                testInstance = new MyPlugin();
            }
            return testInstance;
        }

        String result = "";


        public String UnitySendMessageExtension(String gameObject, String functionName, String funcParam)
        {
            UnityPlayer.UnitySendMessage(gameObject, functionName, funcParam);
            String tempResult = result;
            return tempResult;
        }

        //Receives result from C# and saves it to result  variable
        void receiveResult(String value)
        {
            result = "";//Clear old data
            result = value; //Get new one
        }
    }   

код адаптирован из Решение программиста

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...