Unity 调用Android中的java代码
来源:互联网 发布:淘宝手机详情搭配套餐 编辑:程序博客网 时间:2024/04/30 04:33
文章目录
- 1. Android 程序
- 2. Unity程序
- 3. 最佳实践
Unity与Android交互有多种方式,使用AndroidJavaClass和AndroidJavaObject是最为方便的方式,这里只介绍此种方式
Android 程序
- 按照正常流程创建一个Android工程。
- 在unity的安装路径Editor\Data\PlaybackEngines\androidplayer\bin 下找到classes.jar(windows)
- 将Unity的classes.jar 拷贝到Android工程下libs文件夹下,并引入工程里(右键 >Build path > Add to Build path )
- 开始编写java代码:
- 首先要写一个类继承UnityPlayerActivity
- 然后按照正常java格式编写需要Unity调用的方法
- 可以是静态方法也可以是普通方法只是在Unity中的调用方式不同
- 生成jar文件
- 编译需要Unity调用的工程 project > Build All
- 导出jar文件,选中src和gen文件夹,右键 > Export > JAR file > next > finish
Unity程序
- 正常创建Unity工程
- 在Unity目录里创建如下Plugins目录结构,并将建立好的jar文件导入到unity中,如使用到android中的资源文件,要把相关资源文件也拷贝的对应的目录下。(manifest文件一定要拷贝过来。)
创建AndroidJavaClass和AndroidJavaObject类的实例,例如
12345678public static AndroidJavaClass mBluetooth;public static AndroidJavaObject mContext;mBluetooth = new AndroidJavaClass("com.wangwang.test.mActivity");using (AndroidJavaClass cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")){mContext = cls_UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); //获取Android工程中继承UnityPlayer的类的实例}AndroidJavaClass可以用来调用静态方法,AndroidJavaObject可以用来调用非静态方法,例如:
123
//调用获取到的实例中的方法。java中返回的参数类型用泛型来表示,第一个参数为java中对应的方法名,后面的参数为要传入该java方法的参数。mContext.Call<bool>("changeServiceState","test");mBluetooth.CallStatic<bool>("showToast",str , time); //调用类中的静态方法
最佳实践
使用using方法可以减少一些不必要的内内存开销,如:
12345//cls_UnityPlayer 在使用后会被销毁using (AndroidJavaClass cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")){mContext = cls_UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");}java中继承UnityPlayer的类中需要Content的地方最好都使用UnityPlayer.currentActivity,不然可能会出现莫名其妙的错误
- Unity中的android相关的配置 Bundle Identifier* 可能需要该为java中项目对应的包名。
参考网站
- Unity官方相关文档
- 雨松MOMO的博客
0 0
- Unity 调用Android中的java代码
- Android 代码在Unity中的层级调用
- Unity调用Android原生Java代码以及Unity打开Android原生Activity
- Unity调用Android与IOS平台代码
- Unity调用Android的Java方法
- Unity与Android交互之Unity调用java方法
- Unity调用c++代码
- Unity3D调用Android Java代码
- Unity3D调用Android Java代码
- QT Android 调用JAVA代码
- JS调用Java代码(Android)
- Unity 安卓项目 接入调用java代码
- unity开发android插件(unity调用android代码) – unity3d游戏开发
- Unity调用Android打包的Jar文件中的函数
- Unity调用Android
- Unity调用Android
- unity 调用android函数
- unity 调用android函数
- Markdown的基本用法
- java笔记
- 圆角优化
- Python 异常处理 (二)
- win10下基于anconda安装tensorflow以及在pycharm中的配置
- Unity 调用Android中的java代码
- 产品经理之互联网思维的九大思维
- Spark RDD/Core 编程 API入门系列之简单移动互联网数据(五)
- css换行(white-space、word-wrap、word-break)
- [RK3288][Android6.0] 调试笔记 --- 关闭按键音后无法录音问题
- nginx 切割日志
- LeetCode---1. Two Sum
- ConcurrentHashMap原理分析
- recyclerview嵌套recyclerview