Unity调用java类的android静态函数

时间:2017-01-05 15:25:56

标签: java c# android unity3d unity3d-5

您好我想将这段安卓java代码与c#统一称为java代码:

SmsDialog.getInstance().init(this);
//this is context of android activity

现在我在我的c#代码中这样做:

void ShowPaymentDialog()
{

    AndroidJavaClass smsDialog = new AndroidJavaClass("com.mobagym.testsdkmobagym.SmsDialog");
    smsDialog.CallStatic<AndroidJavaObject>("getInstance").Call("init",getContext());
}
AndroidJavaObject getContext()
{
    AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
    return jo;
}

没有崩溃或任何事情,只是游戏停止并且在ShowPaymentDialog之后没有执行行。

void Start () 
{
    ShowPaymentDialog();
    GoogleAnalyticsV4.getInstance().LogScreen(MyMenuManager.SPLASH_SCREEN);
    StartCoroutine(Next());
}
IEnumerator Next()
{
    yield return new WaitForSeconds(duration);
    SceneManager.LoadScene(MyMenuManager.MAIN_MENU);
}

所以我想知道我是否使用c#语法做错了如果有任何方法可以记录它。

2 个答案:

答案 0 :(得分:0)

您应该尝试按照提及记录错误。 尝试设置try catch块。

Try {
    //do some logic
} catch (Exception e){
    //Log exception
}

检查此链接: https://docs.unity3d.com/ScriptReference/Debug.LogException.html

也许当你有严重错误的堆栈跟踪时,我们可以提供更多帮助。

答案 1 :(得分:0)

您可能有一个本机java异常并且错过了它。您应该将设备连接到它并使用adb logcat监视设备日志,以查找您的方法调用。这应该为您提供足够的信息来继续调试。