Unity3D - 如何从Android调用静态方法

3

我创建了一个简单的插件,用于从Unity3D打开Android Activity。我遇到了触发带参数方法的问题。有什么想法吗?

Java代码

 public static void Show(Activity activity, String value, String value2)
{
    Intent myIntent = new Intent(activity, DisplayAllUnits.class);
    myIntent.putExtra("key1",value);
    myIntent.putExtra("key2",value2);
    activity.startActivity(myIntent);
}

并在onCreate中

   //load units for All Units placement from values
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
       value = extras.getString("key1");
       value2 = extras.getString("key2");

    }
    a_id=value;
    p_id=value2;

C#代码触发它:

 var androidJC = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    var jo = androidJC.GetStatic<AndroidJavaObject>("currentActivity");

    var jc = new AndroidJavaClass("secret.package;)but.it.s.correct");
    string value = "121";
    string value2 = "1400";
    jc.Call("Show", jo, "121", "1400");

问题是什么: - 在没有参数的情况下工作,但在有参数的情况下我遇到以下错误:

I/Unity: AndroidJavaException: java.lang.NoSuchMethodError: no non-static method "Ldisplay/io/unity3dplugin/DisplayAllUnits;.Show(Lcom.unity3d.player.UnityPlayerActivity;Ljava/lang/String;Ljava/lang/String;)V"
                                    java.lang.NoSuchMethodError: no non-static method "Ldisplay/io/unity3dplugin/DisplayAllUnits;.Show(Lcom.unity3d.player.UnityPlayerActivity;Ljava/lang/String;Ljava/lang/String;)V"
1个回答

4

你正在调用Call,该方法旨在调用一个实例方法。你需要使用CallStatic,它可以调用静态方法。


你解决了我的问题 ;) 我刚开始学习Unity3D,谢谢。我会在4分钟内接受答案。 - ramzixp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接