前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unity与Android交互之✨| 使用AndroidJavaProxy代理方式,让Android与Unity通讯

Unity与Android交互之✨| 使用AndroidJavaProxy代理方式,让Android与Unity通讯

作者头像
呆呆敲代码的小Y
发布2021-10-29 10:25:53
2.9K0
发布2021-10-29 10:25:53
举报

前言

Unity与Android交互之✨| 使用AndroidJavaProxy代理方式,让Android与Unity通讯

Android Studio端操作

Unity端操作

总结

请添加图片描述
请添加图片描述
前言
  • Unity与Android进行交互一直都是Unity开发Android的一个常用手段
  • 其中的交互方式也有很多种,常用的就是UnitySendMessageAndroidJavaProxy
  • 那本篇文章来详细的介绍一下怎样在Android和Unity端使用AndroidJavaProxy代理方式进行交互调用
  • 结合一个简单的完整通讯实例来学习,通俗易懂更好理解!看完记得点赞收藏哦~

Unity与Android交互之✨| 使用AndroidJavaProxy代理方式,让Android与Unity通讯

下面我们就先从Android Studio端开始一步一步做起,Android Studio下面统称AS

Android Studio端操作
第一步:打开AS,新建一个工程

打开AS 之后新建一个项目,如下图几个步骤很简单

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后就是等它把工程新建完打开工程后

File->New->New Module,选中Android Library,新建一个Module。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我这里新建的Module名字是MyunityLibrary

在这里创建一个AndroidLibrary,起名为MainActivity,创建好后是这个样子

简单修改了名字和路径之后,我们就进入这个AS工程了

在这里插入图片描述
在这里插入图片描述
第二步:修改AndroidManifest.xml

现在这里有两个AndroidManifest,一个是本工程的,还有一个就是新建的unityLibrary的。

这里把app的AndroidManifest中背景的部分全部复制到我们新建的那个Library的AndroidManifest中。

在这里插入图片描述
在这里插入图片描述

然后记得把我们创建的Library的 package改为com.example.myunitylibrary,然后报红的全删掉.

并且加上下面这一段代码,这段代码必须加上才能与Unity交互!

代码语言:javascript
复制
<meta-data android:name="unityplayer.UnityActivity" android:value="true"/>

改好了如下所示

在这里插入图片描述
在这里插入图片描述

这个时候还报红是因为我们的Library中没有这个类,给他创建一个即可

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这个时候AndroidManifest就算暂时的改好了!

第三步:导入Unity的classes.jar文件

Unity的classes.jar文件,这个目录在安装Unity的路径下

我的路径是在D:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes下。

在这里插入图片描述
在这里插入图片描述

复制,粘贴到AS的 libs目录下,如下所示

在这里插入图片描述
在这里插入图片描述

选中class.jar->右键->AddAsLibrary->选中unitylibrary->Ok

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第四步:添加回调的接口类

在我们的Library下新建一个接口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后简单写几个方法用于测试交互,如下所示:

在这里插入图片描述
在这里插入图片描述
第五步:编写通讯入口方法

在我们的MainActivity中写代码,示例如下:

在这里插入图片描述
在这里插入图片描述

写了一个Unity调用Android的入口函数setCallback,然后再通过Unity传过来的值调用AS端的接口给Unity发送数据

具体Unity端怎样操作的还需要往下看!

第六步:打包AS成aar包给Unity调用

选中Library然后 Build -> Make Module ‘ ’ 等待编译

在这里插入图片描述
在这里插入图片描述

然后AS会多出来一个build文件夹,我们找到outputs -> aar 下的aar包,这个就是我们需要在Unity中导入的文件,保存好就行

在这里插入图片描述
在这里插入图片描述

然后打开这个aar包,把lib文件夹下的class包给删掉,如下所示

如果不能直接打开,把aar修改为zip格式,删掉class后再改回aar格式即可!

在这里插入图片描述
在这里插入图片描述

然后AS端的操作就算完成了,接下来Unity中的就简单了,一起来看一下!


Unity端操作

首先我们打开Unity新建一个项目

在这里插入图片描述
在这里插入图片描述

然后新建一个Plugins文件夹,把我们的aar包放进去,如下所示:

在这里插入图片描述
在这里插入图片描述

然后新建一个场景写一个脚本UnityAndroidDemo

代码内容如下:

代码语言:javascript
复制
using UnityEngine;
using UnityEngine.UI;

public class setAndroidTest : MonoBehaviour
{
    public Text Stringtext;
    public Text Inttext;
    public Button button;

    public static setAndroidTest instance;
    void Start()
    {
        instance = this;
        //创建安卓端入口
        AndroidJavaObject jo = new AndroidJavaObject("com.example.myunitylibrary.MainActivity");
        setAndrodCallback _setAndrodCallback = new setAndrodCallback();

        button.onClick.AddListener(()=> 
        { 
            // 设置回调函数接口,Unity端向安卓端发消息
            jo.Call("setCallback", _setAndrodCallback);
        });
    }

    public class setAndrodCallback : AndroidJavaProxy
    {
        public setAndrodCallback() : base("com.example.myunitylibrary.UnityCallBackTest") { }
        public void IntCallBack(int content) { setAndroidTest.instance.Stringtext.text = content.ToString(); }
        public void StringCallback(string msg) { setAndroidTest.instance.Inttext.text= msg; }
    }
}

脚本中写了一个setAndrodCallback 类,在这个类中有一个跟安卓端中的接口一模一眼

其中下面这行代码中的字符串一定要跟我们AS端的包名+类名一致

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
 public setAndrodCallback() : base("com.example.myunitylibrary.UnityCallBackTest") { }

然后调用AS端的入口函数setCallback启动交互

再把从安卓端传过来的值赋给Unity中的Text文本即可

在这里插入图片描述
在这里插入图片描述

最后就是打包成APK进行测试啦

File -> Build Setting -> Playrt Setting

在这里插入图片描述
在这里插入图片描述

然后点击Build进行打包即可

测试结果如下:

在这里插入图片描述
在这里插入图片描述

点击Button按钮之后,Android端的值就传给Unity并显示到UI上面了!


总结

本篇文章结合示例完整的演示了Unity端使用AndroidJavaProxy的方式与Android端进行交互的方法

过程看起来很繁琐,其实都是很简单的操作,Unity与Android进行交互也没那么难嘛!

那本篇文章就到这里啦,下次再见!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-10-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Unity与Android交互之✨| 使用AndroidJavaProxy代理方式,让Android与Unity通讯
  • Android Studio端操作
  • Unity与Android交互之✨| 使用AndroidJavaProxy代理方式,让Android与Unity通讯
    • Unity端操作
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档