首先说一下我的开发环境:
Android Studio 3.13
Unity3D 2018.2.7
JDK:1.8.1
Android API:28
Android Studio端操作:
1、新建Android工程
- 创建一个空工程
最小API记得选API16
选择Empty Activity
其他设置可以默认,点击【finish】,创建一个新的工程
- 新建一个Library module
我们后面Unity3d中要使用的jar包就是从这个module导出
选择android library,再选择next
这个就是我们创建的模块:
为模块添加Unity中的classes.jar文件
找到Unity2018.2.7的安装位置中的classes.jar,复制这个jar文件:
将classes.jar粘贴到模块的libs文件夹下:
为模块添加classes.jar依赖:
右键选择模块设置:
添加classe.jar依赖
- 在androidlibrary这个模块下新建Activity
我们将在这个Activity调用Unity中的方法以及在这里提供方法让Unity调用
可以默认设备,单击【finish]
删除我们刚刚创建的activity_main.xml文件
修改模块中的MainAcitvity.java类,如下:
修改模块中的AndroidMainfest.xml文件,如下
- 导出jar包
找到生成的classe.jar文件,替换原来的classe.jar
在桌面新建一个文件夹temp,在temp里面再新建 libs文件夹和res文件夹
将生成的classes.jar文件拷贝到libs文件夹中:
将layout和values文件夹拷贝到res文件夹中:
将AndroidMainfest.xml文件拷贝到temp文件夹中:
修改这个AndoridMainfest.xml文件:
以上为Android 端的设置
Unity端操作
- 将刚刚temp文件夹中的文件复制到Unity工程中:
- 新建测试脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UnityAndroidTest : MonoBehaviour {
public Text resultText;
// Use this for initialization
void Start () {
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
//调用android端的add方法
int result = jo.Call<int>("add", 1, 2);
resultText.text = result.ToString();
}
// Update is called once per frame
void Update () {
}
/// <summary>
/// 提供方法让android调用
/// </summary>
public void ChangeColor()
{
resultText.color = Color.red;
}
}
unity build 设置
运行结果
真机运行得出红色的3,unity与android相互调用成功