赞
踩
C#和iOS Obj-C交互的方法,和Android交互也一样简单,主要是Unity提供了非常方便的辅助类,基本不需要和JNI打交道
第一种 new AndroidJavaClass()来创建
AndroidJavaClass jc = new AndroidJavaClass("com.example.mygame.MyActivity");
第一种 我们首先创建了一个AndroidJavaClass
对象,并指定了Java类的完全限定名。然后我们调用了这个Java类的getInstance
静态方法,并将返回的对象存储在AndroidJavaObject
中
- AndroidJavaClass jc = new AndroidJavaClass("com.example.mygame.MyActivity");
- AndroidJavaObject jo = jc.Call<AndroidJavaObject>("getInstance");
第二种 我们首先创建了一个AndroidJavaClass
对象,并指定了UnityPlayer类的完全限定名。然后我们使用GetStatic<AndroidJavaObject>
获取了currentActivity
静态字段。最后我们调用了MyJavaMethod
方法,并传入了两个参数
- AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
- AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
- jo.Call("MyJavaMethod", param1, param2);
第三种 使用AndroidJavaObject 调用 Call<AndroidJavaObject>();
- public static AndroidJavaObject CallReturnObj(AndroidJavaObject obj, string name, object p1) {
- return obj.Call<AndroidJavaObject>(name, p1);
- }
第一种 我们首先创建了一个AndroidJavaClass
对象,并指定了Java类的完全限定名。然后我们使用GetStatic<int>
获取了MY_STATIC_FIELD
静态字段的值,并将这个值存储在int
类型的变量中
- AndroidJavaClass jc = new AndroidJavaClass("com.example.mygame.MyActivity");
- int value = jc.GetStatic<int>("MY_STATIC_FIELD");
使用 AndroidJavaClass和 AndroidJavaObject可以很方便的调用java方法。最常用的是AndroidJavaObject的Call方法;官方文档:http://docs.unity3d.com/ScriptReference/AndroidJavaObject.html
这个Call是支持多参数的,第一个参数必须是方法名,第二个开始则是各种参数。如果有返回值则需要使用泛型版本Call<Type>。
2.1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。