Unity 与 Android 交互

Android 工程

1.Create Project —— 创建安卓工程

默认即可

2.Create Module —— 新建一个模块

切换至 Project 视图下
在这里插入图片描述
在这里插入图片描述

3.导入 Unity Jar —— Unity 的 Jar 包导入到安卓库中

  1. 找到 Unity Jar 包(在 unity 安装目录下)
    在这里插入图片描述
  2. 将复制的 jar 粘贴到创建的 Module lib 目录下并添加到库
    在这里插入图片描述
    在这里插入图片描述

4.新建 Activity

切换到 Android 视图下(不切换也可以,但结构会复杂些)
在这里插入图片描述
在这里插入图片描述

5.修改配置文件和清单文件

  1. 修改MainActivity
    在这里插入图片描述
  2. 修改 AndroidMainfest.xml
    app 中的 AndroidMainifest 文件是完整的,我们可以直接赋值里边的数据,并稍作修改,在这里边添加一段代码标示:表明 我们创建的这个库是给 Unity 用的
    请添加图片描述
<meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
  1. 修改 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
1Call<返回参数>("非静态公共函数名")  调用非静态公共函数
	ReturnType Call<ReturnType>(string methodName, params object[] args);
2CallStatic<返回参数>("静态公共函数名")  调用静公共态函数
3Get<字段类型>("非静态公共字段名称")   获取非静态公共字段
4GetStatic<字段类型>("静态公共字段名称")  获取静态公共字段
5Set<字段类型>("非静态公共字段名称")   设置非静态公共字段
6SetStatic<字段类型>("静态公共字段名称")  设置静态公共字段

参考链接

Unity 与 Android 交互

猜你喜欢

转载自blog.csdn.net/weixin_45136016/article/details/127298701