Unity+Android混合开发记录 (Unity为主Android为辅的模式交互)——1

关于Unity和android的混合开发以及交互教程,网上有很多。但是大多只是部分教程,对于很多只会android或者只会Unity的人来说就比较尴尬。所以,在学习研究之后写一篇文章来记录自己躺过的坑。

关于Unity和android的混合开发,我一般理解为两种。一种是以Unity为主 android为辅的模式,第二种是以android为主Unity为辅的模式。我个人是第一种,因为对android不太熟悉为了这个交互开发硬生生把android入门了。所以第二种只简单说一下我踩过的坑,有android方面不对的地方请大神轻喷。

开发环境搭建我就不多赘述了,既然你都来看我片文章。说明你至少是会android开发或者Unity开发的。所以,androidSDK+androidStudio的开发环境搭建网上有很多教程。这里我就不写了。Unity也是一样,网上有很多教程。

我的开发环境,Unity2018.2.20  +  AndroidStudio3.5.2

1、Unity为主android为辅的模式交互

这种模式主要将android工程打包成aar,放到Unity->Plugins下然后在Unity里面来调用的方法,大部分教程介绍也是这种

新建一个android工程

                                                                                                                                                                                                        创建一个新的android工程
创建一个空的Activity


这里最主要的就是PackageName 包名一定要和Unity里的PackageName一致


Unity里面的包名

2、找到你的Unity安装目录下classes.jar文件,具体路径是

你的Unity安装文件夹+Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar

如果你的项目采用il2cpp编译,那么路径则是:

你的Unity安装文件夹+Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Classes\classes.jar

3、找到classes.jar文件后将文件放到你的android工程->app文件夹下的libs文件夹中


4、复制后还需要将 classes.jar包作为库添加到android工程中,在classes.jar上右键,找到Add As Library点击确定


5、如果能看到classes.jar下的文件夹了。就表示你已经添加成功



6、找到你的android工程代码MainActivity.java,打开编辑


7、编辑java脚本需要注意点图片中都已经说明


8、这步完成后,还需要处理几个地方。也可以说是小坑,因为这几个地方没处理好,Unity打包的时候很容易报错或者闪退

找到你的android工程app目录下的build.gradle文件打开编辑


9、编辑需要注意的地方都在图片中标明了


10、编辑Android工程App文件夹下的AndroidManifest.xml文件



11、配置完成AndroidManifest.xml还有一个styles.xml需要改

这里是第二个坑,样式表文件sytles.xml这里面默认内容都要屏蔽。这个android工程只用来调用一些函数或者库来给Unity调用,不是用来打apk的android工程所以不需要这个表。反之如果不删除会导致在Unity打包的时候,因为表里有引用文件,文件找不到会报错导致打不了包


将styles.xml里面的默认内容全部屏蔽或者删除掉


如果屏蔽掉styles.xml文件后,Unity打包还是报错的话。个人建议将res文件夹下的资源全部删除


12、到这里Android工程中的配置和编辑就已经基本完成,开始打aar包。找到androidStuido 右上角的Gradle选项,打开找到工程文件夹注意不是app哈。找到Build或者other文件夹下找到assembleDebug或者assemble都可以。ps:但是第一次打开的时候找不到这些打包脚本怎么办,那就刷新一下Gradle



13、刷新Gradle,刷新完成就有build和other文件夹了。ps:assemble是同时打Release包和Debug包。而other目录下的就是单独打Release和debug的意思。

14、我们选择只打debug包,就选other文件夹下的assembleDebug打包脚本运行,然后打出来包的位置再app->build->outputs->aar


-----------------------------到此为止Android里面的处理就完成了,开始在Unity里面开发---------------------------------

15、将打包出来的aar复制到Unity工程目录下的Plugins->Android下面 ps:没有这个目录就建一个

然后用压缩软件打开aar文件,将里面的AndroidManifest.xml文件解压到aar同级目录下


16、将Unity工程切换为Android模式


17、开始创建一个c#脚本,将脚本挂载到Unity场景上


18、编写c#调用代码,这里说一下Unity调用Android代码有多种方式,我这里暂时说第一种比较常规常用的,后面会写第二种


19、到了这里,我们已经能知道Unity场景节点名字,Unity接收Android函数的名字。可以根据这两个参数重新修改android工程里的MainActivity.java代码

场景节点名字叫GameObj     接收函数的名字是UnityToAndroid


我们重新修改android代码


编辑完成后-->重新压aar包-->通过压缩软件把androidManifest.xml文件拖出来(相当于重新执行13,14,15步的操作)

20、用Unity打apk




设置或者检查Unity里面的包名,要和android工程里面一样。选择最小和最大的android版本


检查或者设置完成,打包


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容