Android 工程
1.Create Project —— 创建安卓工程
默认即可
2.Create Module —— 新建一个模块
切换至 Project 视图下
3.导入 Unity Jar —— Unity 的 Jar 包导入到安卓库中
- 找到 Unity Jar 包(在 unity 安装目录下)
- 将复制的 jar 粘贴到创建的 Module lib 目录下并添加到库
4.新建 Activity
切换到 Android 视图下(不切换也可以,但结构会复杂些)
5.修改配置文件和清单文件
- 修改MainActivity
- 修改 AndroidMainfest.xml
app 中的 AndroidMainifest 文件是完整的,我们可以直接赋值里边的数据,并稍作修改,在这里边添加一段代码标示:表明 我们创建的这个库是给 Unity 用的
<meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
- 修改 bulild.gradle
afterEvaluate {
generateReleaseBuildConfig.enabled = false
generateDebugBuildConfig.enabled = false
}
生成 Android Jar 文件
切换到 Project 目录下,在文件夹中打开该文件
将上面的三个文件夹导入到 unity 的 Assets/Plugins/Android 下
Unity 工程
1.Create C# Script —— 在 Unity中创建一个C#脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UAExTest : MonoBehaviour
{
public Button btn;
public Text text1;
public Text text2;
private AndroidJavaObject jo = null;
// Start is called before the first frame update
void Start()
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
btn.onClick.AddListener(()=>{
int res = jo.Call<int>("Add", 1, 2);
text1.text = res.ToString();
});
}
public void UnityMethodA(string a)
{
text2.text = a;
}
}
2.Create Unity UI —— 在 Unity中创建简单的UI
3.PlayerSettings —— Unity打包App之前的设置
注意:
更改下 PlayerSettings 中的 Package Name
需要与 AndroidManifest.xml 中的包名保持一致
4.Builde —— 打包打真机上测试
Unity 获取 Android 类、类的方法函数、字段属性
// 1. 获取 Android 包下(类似于C#的命名空间)的指定类,方法一
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
// 2. 获取 Android 包下(类似于C#的命名空间)的指定类,方法二
AndroidJavaClass mainActivityClass = new AndroidJavaClass("com.xan.intentreceiver.MainActivity"
// 下面函数还可传其它参数,具体看API
1、Call<返回参数>("非静态公共函数名") 调用非静态公共函数
ReturnType Call<ReturnType>(string methodName, params object[] args);
2、CallStatic<返回参数>("静态公共函数名") 调用静公共态函数
3、Get<字段类型>("非静态公共字段名称") 获取非静态公共字段
4、GetStatic<字段类型>("静态公共字段名称") 获取静态公共字段
5、Set<字段类型>("非静态公共字段名称") 设置非静态公共字段
6、SetStatic<字段类型>("静态公共字段名称") 设置静态公共字段