Android与unity交互的几种方式
本人安卓开发纯小白,主要做unity开发,下面都是自己学习的一些理解,说的不合适的地方多多见谅
- android主导
- 在android中拓展unity activity并导出JAR包;
- 在android中拓展unity activity并导出AAR包;
- 在android中拓展类并导出JAR包。
- unity主导
- 全部在c#内进行作业;
详细步骤
一、android主导
1、在android中拓展unity activity并导出JAR包
该方法适用广,较复杂,目前unity官方已不推荐使用
-
在android studio 中新建安卓工程
-
创建一个新的android library
- 导入对应的unity jar包
- 因为是对unity 的项目进行扩展需要导入unityJAR包,路径:unity安装目录下 Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes,其中momo也可以是il2cpp,根据自己项目设置选择,然后拷贝粘贴上面创建的library中
- 创建空的Activity
- 由于是拓展unity activity所以要把附带创建的界面也删掉
- 由于是拓展unity activity所以要把附带创建的界面也删掉
- 修改mainactivity
- 删除爆红的代码并继承自UnityPlayerActivity
- 删除爆红的代码并继承自UnityPlayerActivity
- 修改manifest
- 删除爆红的字段,保留并修改lable,切记添加以下代码
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
- 删除爆红的字段,保留并修改lable,切记添加以下代码
- 在mainactivity中添加方法
- 添加自己需要用的到函数,这里我添加了一个调用toast多的方法
-
build自己的库
- 找出自己需要的东西修改并放到unity中(Pulgins/Android)中
- 需要修改AndroidManifest.xml中的包名
- 需要修改AndroidManifest.xml中的包名
-
在unity中使用
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); jo.Call("ShowToast","send form unity");
2、在android中拓展unity activity并导出AAR包
该方法适用广,较复杂,unity官方推荐使用
-
前面步骤与JAR包的使用完全相同,只是build之后拿给Unity使用的资源不同;其实AAR就是一个压缩包,包含了JAR需要的资源,官方给整合了
-
拷贝并修改AAR
-
unity中使用与JAR完全相同
3、在android中拓展类并导出JAR包,不修改unity activity
该方法适用少,简单
-
新建java类
-
添加需要的函数
-
build和使用jar包
AndroidJavaObject jo = new AndroidJavaObject("com.huazai.toasttest.toasttest"); jo.Call("ShowLogErr","UnityTest","tttttttttttttt");
二、unity主导
-
完全通过c#实现,改方法和上面3基本一样,只不过不用导出JAR包,调用的是android SDK中的函数而已
以上只是我的学习记录而已,有点乱,应该只有自己能看的懂了,哈哈、、、