一、前言

在这个移动设备盛行的年代,开发移动端App尤为重要,虽然说Unity这个跨平台引擎支持将项目打包成安卓和ios,但是Unity的项目都是用C#开发的,如果想要调用安卓原生的方法,则需要创建一个安卓项目,在里面编写安卓相关的代码,接着打成一个jar包放到Unity项目中,Unity再通过这个jar包去调用安卓方法,对于不会开发安卓的Unity开发者来说,配置安卓的环境都能整到崩溃(比如写这篇文章的人)。但今时不同往日,在Unity 2018.2开始,Unity开始支持使用Java或Kotlin源码文件作为插件直接导入Unity工程中使用,再也不用担心因为不会安卓开发而崩溃了!!!那接下来就来看看怎么通过这种方式让Unity与安卓进行友好地沟通交流吧!

二、编写Java代码

首先我们创建一个Java文件并写了一段Java代码,里面有一个计算两个数相加的方法 image.png

为了让这段代码能成功被调用,我们需要将这个Java文件放到Plugins下 image.png

三、Unity调用安卓方法

在开始与安卓沟通前,Unity需要先做好准备,我们先搭建一个简单的界面来进行测试: image.png

当我们点击“SendToAndroid”按钮时,就会调用安卓的方法,”LogText”就会打印输出日志。

接着在Unity工程中写了一个Main类,用来编写调用安卓的方法。 image.png

上面这段代码实例化一个AndroidJavaObject对象,用来调用安卓的方法,需要注意的是,这里的对象参数就是刚才编写的Java代码中,对应的是Package名称和Class名称,这样子我们才能精准找到该对象。

接着通过Call方法可以调用Java方法,Call方法第一个参数为要调用的方法名,后面的参数就是我们的传参,有多少就写多少。如果该方法有返回值的话,则需要以泛型的方式传给Call方法。

接着我们将这个脚本挂载到场景中:

image.png

打包到安卓手机上运行,点击按钮后成功输出结果! image.png

四、Android调用Unity方法

既然我们能让Unity单方面发消息了,那Android也得发消息给Unity才行呀,这样双方有来有回的才能叫沟通!那要怎么让Android给Unity发消息呢?

Unity其实早就做好沟通的准备了,他提供了UnitySendMessage方法,只要安卓通过这个方法就能与Unity进行沟通了,还得是Unity想得周到!

不过安卓在调用这个方法之前,需要先引入UnityPlayer;

image.png

接着我们在刚才的Java文件中编写代码发送消息给Unity image.png

第一个参数:挂载接收消息脚本的GameObject名称,名称不一样会找不到的;

第二个参数:接收消息的方法;

第三个参数:传给方法的参数,如果没有参数则传空字符串””即可;

在Unity添加一个按钮来触发安卓发送事件

image.png

Unity工程添加接收事件方法: image.png

打包到安卓后运行: image.png

至此,我们已经完成了Unity与安卓沟通的第一步,这简单的一小步,是跨平台开发的一大步!!!

=============感谢观看=============