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#の構文でsthを間違っているかどうか知りたい. そして、これを記録する方法があれば。

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 に答える