作者个人网站:http://www.harddone.com
Unity开发过程中,如果要调用Android端的java方法,恰巧该方法的参数是可变参数或者数组,使用unity的AndroidJavaObject提供的call方法直接传递c#数组,是需要对数组参数做一下处理。举例说明:
java方法如下:
public void addList(String... values){
}
unity c#调用时,需要把传入的参数数组转化成一个AndroidJavaObject,然后再调用AndroidJavaObject提供的call方法。
public void add(string[] values){
AndroidHelper.getIapManagerAndroidObject ().Call (_javaMethodName, javaArrayFromCS(values));
}
private AndroidJavaObject javaArrayFromCS(string[] values){
AndroidJavaClass arrayClass =newAndroidJavaClass("java.lang.reflect.Array");
AndroidJavaObject arrayObject = arrayClass.CallStatic("newInstance",newAndroidJavaClass("java.lang.String"), values.Count());
for(int i=0; i < values.Count(); ++i){
arrayClass.CallStatic("set", arrayObject, i,newAndroidJavaObject("java.lang.String", values[i]));
}
return arrayObject;
}
网友评论