2014-10-21 58 views
2

所以我綜合我的項目與Eclipse,並通過C#調用使我的Java類電話:如何使用AndroidJavaObject.Call將參數傳遞給Java?

AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); 
jo.Call("Trigger"); 

現在提供我不試圖傳遞任何參數與觸發方法調用一起,它調用完美的方法。但是,如果我嘗試通過以下變量:

jo.Call("Trigger", "my string"); 

統一引擎認爲mystring arg指的是被調用方法的簽名類型。我如何將變量傳遞給我的Java方法?

最重要的是,我如何返回從Java到C#的變量?它會像

String myString = jo.Call("Trigger"); 

感謝您提前的幫助!

回答

1

試着這樣做。這是爲我工作:

using(AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) 
{ 
    using(AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity")) 
    { 
      jo.Call("Trigger", "my string"); 
    } 
} 

然後在Eclipse中你做:

void Trigger(String message) 
{ 
    if(message=="my string")... 
} 

發送從Java到C#變量: 在Eclipse中你做:

UnityPlayer.UnitySendMessage("Android", "ReceiveVar", "some string"); 

哪裏"Android"是包含"ReceiveVar(string str)"函數的腳本和"some string"是您的變量(這是Unity部分)。

+0

工作了一個魅力,謝謝! – Jack 2014-10-25 10:39:33