我正在Unity3D & Android跨平臺項目。在C#中使用Androidjavaobject可以將二維數組傳輸到Java?並返回
我想提高性能,所以我改變了我的代碼。
這是我第一次嘗試。
在C#
string str = JO.Call<string> ("GetDevices");
在Java中
public String GetDevices() {
String devices = "";
/* ... */
return devices;
}
它的工作原理,但我不喜歡這樣。
所以,我改成了這樣:
在C#
string[,] str = new string[deviceNum,2];
str = JO.Call<string[,]> ("GetDevices");
在Java
public String[][] GetDevices() {
String[][] devices = {{""}};
/* ... */
return devices;
}
但它不工作。我究竟做錯了什麼?
這是我第一次嘗試日誌:
I/Unity: Exception: JNI: System.Array in n dimensions is not allowed
at UnityEngine._AndroidJNIHelper.GetSignature (System.Object obj) [0x00000] in <filename unknown>:0
at UnityEngine._AndroidJNIHelper.GetSignature[String[,]] (System.Object[] args) [0x00000] in <filename unknown>:0
at UnityEngine._AndroidJNIHelper.GetMethodID[String[,]] (IntPtr jclass, System.String methodName, System.Object[] args, Boolean isStatic) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJNIHelper.GetMethodID[String[,]] (IntPtr jclass, System.String methodName, System.Object[] args, Boolean isStatic) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJavaObject._Call[String[,]] (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJavaObject.Call[String[,]] (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
我試着 「PEF」 的方式和日誌這樣
07-18 10:21:58.318 18999-19055/? I/Unity: Exception: JNI: Unknown generic array type 'System.String[]'
at UnityEngine._AndroidJNIHelper.ConvertFromJNIArray[String[][]] (IntPtr array) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJNIHelper.ConvertFromJNIArray[String[][]] (IntPtr array) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJavaObject._Call[String[][]] (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJavaObject.Call[String[][]] (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
@stefanobaghino謝謝stefanobaghino – kimjinyam