1

嗨,我想将这段 android 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# 语法上做错了什么。如果有任何方法可以记录这一点。

4

2 回答 2

0

您应该尝试记录您提到的错误。尝试设置一个 try catch 块。

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

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

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

于 2017-01-05T15:41:52.980 回答
0

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

于 2017-01-05T15:44:58.697 回答