Я встроил проект 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
}
}
код адаптирован из Решение программиста
Спасибо!