一、前言

这篇文章主要讲的是如何使用Android Studio与Unity的交互通信。主要内容有如何在Android Studio创建工程,如何设置,以及如何导出。以及在Unity调用Android的方法。

二、参考资料

  1. Unity与Android通信 https://blog.csdn.net/qq_33747722/article/details/53390198
  2. Unity和Android相互通信 https://blog.csdn.net/qq_15267341/article/details/51961665
  3. [Unity][安卓]Unity和Android Studio 3.0 交互通讯(1)Android Studio 3.0 设置 https://blog.csdn.net/bulademian/article/details/78387461

三、目录

  • 新建Android项目
  • 新建Android模板Module
  • 导入加载jar文件
  • 修改AndroidMainfest.xml文件
  • 修改MainActivity文件
  • 编译构建项目
  • 导入Unity
  • Unity调用Android项目方法

四、正文

1、新建Android项目

Fiele->New->New Project【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第1张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击 FINISH 按钮,新建工程。
在这里插入图片描述

2、新建Android模板Module

右键项目 New->Module
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第2张图片
选择Android Library
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第3张图片
这个地方可以设置模块的名字
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第4张图片
点击Finsh就可以了
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第5张图片
如果不小心写错模块名字了,想删除了,就右键 Open Module Settings
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第6张图片
删除就行了
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第7张图片

3、导入加载外部jar文件

这个有三种加载外部jar文件的方法,这边只采用第一种,剩余方法可以参考我另一篇文章。
【Android Studio】导入外部jar包【https://blog.csdn.net/q764424567/article/details/85231151】
切换到Project视图
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第8张图片
找到libs文件夹
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第9张图片
将你自己要使用的jar包拖进去(复制粘贴也行)
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第10张图片
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第11张图片
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第12张图片
右击Jar文件,点击Add As Library后,在出现的弹出框点击确定即可
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第13张图片
添加成功
导入成功的jar包
在这里插入图片描述
打开build.gradle文件,可以看到最后一行添加成功的代码
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第14张图片
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第15张图片

4、将Unity的classes.jar加载到项目中去

classes.jar这个文件,直接可以在Unity的安装目录中搜索,找到之后复制粘贴到项目的libs文件中
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第16张图片
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第17张图片
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第18张图片
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第19张图片
OK了
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第20张图片

5、 新建MainActivity

切换到Android视图,然后展开unity_exchange->java->右键第一个文件夹
在这里插入图片描述
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第21张图片
不做任何 处理,点击 FINISH 按钮后。

就新建了MainActivity ,右边是初始脚本。
在这里插入图片描述

6、修改AndroidMainfest.xml文件

1.先把unity_exchange下面res文件夹中的layout下面的activity_main_xml删除
在这里插入图片描述
如果有报错
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第22张图片
就把MainActivity.java脚本中的
在这里插入图片描述
这一行注释掉

2.修改unity_exchange目录下的mainfests文件中的AndroidManifest.xml

打开app目录下的manifests文件夹中的AndroidManifest.xml
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第23张图片
复制这一段代码
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第24张图片
粘贴到unity_exchange->manifest->AndroidManifest.xml
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第25张图片

7、修改MainActivity文件

【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第26张图片
在这里插入图片描述
这个时候,如下所示。
在这里插入图片描述
改为如下所示。
在这里插入图片描述
下面就是在Android中编写Unity要调用的方法了,例如我这里只写一个简单的两数求和的方法:
在这里插入图片描述
在这里插入图片描述

8、编译构建项

1.编译
选中 unity_exchange 点击build – Make Module ‘unityexchange’
在这里插入图片描述
等待一下,就会显示如下所示。如果没有,就重新试几次。
在这里插入图片描述
使用 Build – Make Project 或者 Build – Rebuild Project 重新编译工程。
切換到Project视图,可以看到build文件中有一个packaged-classes文件夹,不同版本的Android Stuido可能文件夹名字不一样,百度一下就知道了
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第27张图片
右键show in explorer,打开文件夹到当前目录
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第28张图片
2.把classes.jar移动到libs文件夹中
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第29张图片
3.将AndroidManifest.xml和res文件夹,复制到这个文件夹中
AndroidManifest.xml在
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第30张图片
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第31张图片
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第32张图片

9、导入Unity

新建Unity工程
在工程目录创建Plugins->Android
然后将上图中的3个文件复制过来
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第33张图片

10、Unity调用Android项目方法

1.新建test1.cs挂载在Main Camera上面
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第34张图片
2.编写代码

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class test1 : MonoBehaviour{    private Transform cantrans;//Canvas    private Text text;//text    private Button button;//按钮    private AndroidJavaObject jo = null;    private InputField input1;    private InputField input2;        void Start()    {        //固定写法        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");        jo = jc.GetStatic<AndroidJavaObject>("currentActivity");        cantrans = GameObject.Find("Canvas").transform;        text = cantrans.Find("Text").GetComponent<Text>();        button = cantrans.Find("Button").GetComponent<Button>();        input1 = cantrans.Find("InputField").GetComponent<InputField>();        input2 = cantrans.Find("InputField2").GetComponent<InputField>();        button.onClick.AddListener(OnClick);    }    //按钮方法    public void OnClick()    {        text.text = "";        int res = jo.Call<int>("Add", int.Parse(input1.text), int.Parse(input2.text));        text.text = res.ToString();    }}

3.制作UI
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第35张图片
4.打包发布

复制AndroidManifest.xml中这一行代码
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第36张图片
粘贴到这里
【Unity3D】Unity3D与Android的交互通信(Android Studio3.0版本)_第37张图片
发布,运行

更多相关文章

  1. Android 升级SDK管理器版本到20,安装Android 4.0以及更高版本
  2. Android进程间通信--消息机制及IPC机制实现
  3. Android 之 ImageSwitch图片转换器
  4. Android下图片或按钮等可拖动到任意位置的效果实现源码
  5. Android Studio apk系统签名和版本描述的实现
  6. android 开发对gif解码(适配android 4.2、4.3、4.4版本)
  7. android 处理图片工具
  8. Android API与Android版本的关系
  9. android ImageView 显示本地图片

随机推荐

  1. linux下使用c++语言对mysql数据库操作
  2. 操作MySQL,使用ezSQL,简单而方便
  3. asp.net按路径把图片上传到sql数据库
  4. 数据库 T-SQL 里的 GO 是什么意思
  5. 由mysql-安装版 制作 mysql-免安装版
  6. 要在SQL数据库中根据身份证号码查询出性
  7. 常用的hive-sql操作命令(1)
  8. 从Visual Studio 2012访问Netezza SQL数
  9. SQL标准从审核日志问题中选择当前记录
  10. Ms sql 2005 中的bit 数据类型