-> Резюме:
Я хочу отправлять сообщения из AndroidStudio - Код в Unity - Обычный способ не работает.
-> Что я пробовал:
У меня есть два проекта в Unity3D.Они точно такие же, за исключением того, что один из них настроен для Oculus Gear Vr ... Затем я экспортирую (Android) оба этих проекта и открываю их как проекты AndroidStudio.Когда я запускаю их, теперь они работают точно так же, как и ожидалось!
Но когда я пытаюсь использовать метод UnityPlayer.UnitySendMessage, кажется, что этот метод не выполняется в приложении с настройкой для VR ... Приложениене вылетает, он не показывает никаких ошибок в LogCat, и я пытался поймать любой Throwable, но это тоже не сработало ...
(В приложении без настройки VR работают те же строки кода ...)
-> Android - код:
public class UnityPlayerActivity extends Activity {
[...]
onCreate(Bundle savedInstanceState){
[...] //code generated by Unity
try{
Log.d("mDEBUG", "Test Android1");
UnityPlayer.UnitySendMessage("AndroidCommunication", "AndroidStudioInit", "false");
Log.d("mDEBUG", "Test Android2");
}catch(Throwable e){
e.printStackTrace();
}
}
//Function used by Unity - Code
public void unityLog(String msg){
Log.d("mDEBUG", "Unity: " + msg);
}
[...]
}
-> Unity - код:
public void AndroidStudioInit(string flag)
{
bool sendCurCameraRotation = bool.Parse(flag);
AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject unityPlayerActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
unityPlayerActivity.Call("unityLog", "AndroidStudio - Unity - Init");
}
->Ожидаемые результаты :
Для обоих приложений должно быть напечатано в Logcat:
- "[...] D / mDEBUG: Test Android1"
- "[...] D / mDEBUG: Unity: AndroidStudio - Unity - Init"
- "[...] D / mDEBUG: Test Android2"
-> Фактические результаты :
Для приложения без настройки для VR :
- "[...] D / mDEBUG: тестирование Android1 "
- " [...] D / mDEBUG: Unity: AndroidStudio - модульy - Init "
- " [...] D / mDEBUG: Test Android2 "
Для приложения с VR :
- "[...] D / mDEBUG: тестировать Android1"
- "[...] D / mDEBUG: тестировать Android2"
Тамтакже нет ошибок, и приложение Unity не дает сбоя ... оно просто "кажется, игнорирует" вызов функции ...