Unity_与android交互
2013-08-22 22:45
471 查看
Unity调用Android代码
方法一:
Unity调用Java方法时,参数或者返回值最好是Byte或者Byte[]。
此方法的缺点是在Android平台容易造成Local Ref > 512的溢出Bug。(因为自己无法手动删除Local Ref)
方法二:
该方法可以手动的删除Local Ref,不过代码比较繁琐.
Android调用Unity代码
方法一:
//using让 Local Ref 回收 using(AndroidJavaClass javaClazz = new AndroidJavaClass("com.ddianle.Bitmap")) { int res = javaClazz.CallStatic<int>("DrawText", 'a');//调用静态方法 }
public static int DrawText(char c) { return 1; }
Unity调用Java方法时,参数或者返回值最好是Byte或者Byte[]。
此方法的缺点是在Android平台容易造成Local Ref > 512的溢出Bug。(因为自己无法手动删除Local Ref)
方法二:
public static byte[] DrawText(String str, byte[] b) { return null; }
IntPtr clazzPtr = AndroidJNI.FindClass("com/ddianle/Bitmap"); IntPtr methodPtr = AndroidJNI.GetStaticMethodID(clazzPtr, "DrawText", "(Ljava.lang.String;[B)[B"); //Two param IntPtr v1 = AndroidJNI.NewStringUTF("abc"); jvalue j1 = new jvalue(); j1.l = v1; IntPtr v2 = AndroidJNI.ToByteArray(Encoding.Default.GetBytes("abc")); jvalue j2 = new jvalue(); j1.l = v2; IntPtr resPtr = AndroidJNI.CallStaticObjectMethod(clazzPtr, methodPtr, new jvalue[]{j1, j2 });//调用 byte[] b = AndroidJNI.FromByteArray(resPtr); //... //删除Local Ref。methodPtr不需要手动删除,因为它不是一个jobject对象。 AndroidJNI.DeleteLocalRef(clazzPtr); AndroidJNI.DeleteLocalRef(v1); AndroidJNI.DeleteLocalRef(v2); AndroidJNI.DeleteLocalRef(resPtr);
该方法可以手动的删除Local Ref,不过代码比较繁琐.
Android调用Unity代码
相关文章推荐
- [Unity3D]Unity3D游戏开发之Unity与Android交互调用研究
- Unity 与 Android通信交互
- unity android 交互的问题
- [Unity][unet][Android]电脑和电脑发送信息交互通讯
- [Unity][Android]Unity与Android设置USB交互
- Unity和Android交互的好文章汇总
- unity与Android的交互初接触
- 【Android和Unity交互】Android SDK下载速度慢无法更新?使用国内镜像站加速!
- unity与android相互交互
- Unity与Android间的交互
- Unity与Android交互之Unity调用java方法
- unity与android交互
- Unity与Android交互 支付SDK接入流程
- Unity和Android交互,按下锁屏键解锁后游戏重新启动问题解决方法
- [Unity3D]-Unity与Android交互
- Unity 与 Android (Android Studio)的交互
- Android和Unity混合开发——Activity和Unity脚本交互和信息传递
- unity与ANDroid交互
- Unity3D]Unity3D游戏开发之Unity与Android交互调用研究
- Unity与Android之间的交互之AndroidManifest