1. 程式人生 > >Unity呼叫Android引數為陣列的方法

Unity呼叫Android引數為陣列的方法

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  = new AndroidJavaClass("java.lang.reflect.Array");
	AndroidJavaObject arrayObject = arrayClass.CallStatic<AndroidJavaObject>("newInstance", new AndroidJavaClass("java.lang.String"), values.Count());
	for (int i=0; i<values.Count(); ++i) {
		arrayClass.CallStatic("set", arrayObject, i, new AndroidJavaObject("java.lang.String", values[i]));
	}

	return arrayObject;
}