UnityPlayer.UnitySendMessage
- это функция void
и не возвращает значение. Взгляните на реализацию функции UnitySendMessageExtension
ниже. Он похож на ответ turnipinindia's, но он возвращает значение. Он возвращает только string
, поэтому вам нужно преобразовать эту строку в любой тип переменной, с которой вы работаете.
Java:
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
}
}
C#:
class TestScript: MonoBehaviour
{
//Sends the data from PlayerPrefs to the receiveResult function in Java
void sendResultToJava(float value)
{
using(AndroidJavaClass javaPlugin = new AndroidJavaClass("com.company.product.MyPlugin"))
{
AndroidJavaObject pluginInstance = javaPlugin.CallStatic("instance");
pluginInstance.Call("receiveResult",value.ToString());
}
}
//Called from Java to get the saved PlayerPrefs
void testFunction(string key)
{
float value = PlayerPrefs.GetFloat(key) //Get the saved value from key
sendResultToJava(value); //Send the value to Java
}
}
Использование с Java:
String str = UnitySendMessageExtension("ProfileLoad", "testFunction","highScore");
Это будет работать с любым C# FUNC Тион. Просто убедитесь, что вы вызываете функцию sendResultToJava
в конце функции C#, как мы это делали в функции testFunction
, если вы хотите, чтобы она возвращала значение.
Что такое ProfileSave? – Programmer
его игровой объект ... – user3855589
Сделайте 'getTest' void и назовите его как' void'. Дайте мне знать, если это работает – Programmer