经常地,我们需要使用unity来调用安卓的一些原生功能,比如toast的啊,或者其他的一些功能,这些在网上也可以找到许多。
但是。往往会有一些特殊的需求需要在安卓中调用unity。具体是什么需求会用到呢?能找到这里的各位心里肯定有自己的答案。目前网络上大多的资源都是使用的eclipse来调用。但是如今AS已经慢慢成为主流。新版本的unity都已经支持将工程发布为AS支持的Gradle。
本文就主要讲解了如何使用AS调用unity工程。
1.unity的工程包名以及所支持的API版本需要和安卓程序相同(不要问我不相同可不可以,可以。但是谁知道会遇到什么坑。)
2.其次,要设置包的keystore。因为只有设置了keystore才可以发出工程文件而不是apk文件。
3.这样就可以发布成AS可以使用的工程文件了
找到你发布出的工程文件,unity这部分就算是完成了。
AS
1.进入安卓工程中
通过导入模块的方式把unity打包出的安卓工程包导入进来。让其作为一个模块来调用。
可以看一下setting.gradle中的include是否包含了你的工程,当然正常情况下肯定是包含了。
这样非常方便管理,而且对先前的安卓工程几乎没什么影响。其次我们要修改unity工程中的一些配置。
首先是build.gradle中的。需要修改的我已经用红线和圈标出来。
1,首先就是将我们unity的工程修改为library。因为我们的包只是作为附加模块。
2.这个时候如果你build你会发现他出错了。因为我们将其改为library后。defaulyconfig中的appid已经不需要了,所以要将他删掉。图中在花圈处已经删掉。
其次,需要修改的是unity打出来包中的AndroidManifest.xml。安卓在其编译时会将所有的模块中的Android manifest合并起来,所以我们需要修改的只是多个manifest中相同的地方,因为不同的地方合并后不会冲突。
如图所示,我们注释掉了其中intent-filter中的Main和Launcher这两行,这两行的意思是将该activity作为主页和启动页,很显然,我们需要将安卓的页面作为主页和启动页,所以这两行需要删掉。如果你unity工程中用到了很多第三方的插件,那么你就要注意一下,看一下是不是所有的标签都正确没有错误,我这边可是遇到过,因为使用插件过老,标签过时了的情况。
配置到此也就完了。
接下来就是代码调用了。
简单的调用如图所示。
通过在安卓中点击按钮然后跳转的unity的场景。亲测可用。
在此要特别感谢我的老友thorn。在安卓这块给了我很多帮助。
如果你有什么意见或者建议千万不要吝啬评论噢。