Unity呼叫Android引數為陣列的方法
阿新 • • 發佈:2019-02-09
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; }