Unity和安卓的相互通信

在使用Unity做移动端的时候,肯定离不开与安卓打交道,Unity与安卓相互调用,比如支付SDK,没有提供给Unity直接的SDK,所以需要我们现在安卓端接好,在导给Unity使用,转接过程很头痛对于没有安卓开发基础的人来说。本文实现一个Unity与安卓函数相互调用的例子。

之前都是通过Jar包来做的,但是现在AndroidStudio 支持导出AAR包了,而且这也是官方推荐的方式。

jar 包只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。

aar包包含所有资源,class以及res资源文件全部包含

本文使用AndroidStudio 导出AAR包的方式。

1.新建AS工程

选择EmptyActivity

2.把unity的jar包导进来,Unity jar 包 路径 在 Unity安装路径,Editor-->Data-->PlaybackEngines-->AndroidPlayer-->Variations-->mono/il2cpp(这里根据你的unity编译类型来选择)-->Release-->Classes

选中复制到AS工程libs 下,在as里面 点击File-->Project Structure,选中当前modul,选择

选择jar dependence,选择jar 文件,Scope 改为 CompileFile模式,省的后来在aar包中删除jar。

3.打开ManiActivity文件,让该类继承自:UnityPlayerActivity,AS会自动添加引用

注释掉安卓显示函数:// setContentView(R.layout.activity_main);

添加我们的测试函数,这里比较简单

接下来修改AndroidManifest文件,添加一句话

因为我们要打的是aar包,所以修改build.gradle文件,头文件修改为 library

apply plugin: 'com.android.library'

注释掉

不修改的话打出来的不是aar,而是apk

接下来就可以打包了,

在app-->Build-->outputs -->aar下面就会有aar文件,右键ShowInExplor,用压缩软件打开,把里面的Manifest文件拖出来,在Unity里面新建Plugins-->Android文件夹,把那两个文件拖进去,开始编写C#代码。

build apk的时候,包名要和AS中的包名一致,打包方式改为Internal,不然可能会报错误信息。

打开模拟器测试:点击按钮出现返回消息

打包的时候,可能会有各种错误,我的就是SDKBuildTools 版本过低导致打包出错,更新一下就好了。

如果我们不需要重写Oncreat 等一些函数的时候,还可以利用Java的反射特性来导AAR包,这样就可以省去导Unity的jar包步骤,具体文章:https://www.jianshu.com/p/86b275da600e

发布了76 篇原创文章 · 获赞 43 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/hnzmdlhc/article/details/89296388