[Unity]AndroidStudio导出aar包与Unity交互

Unity版本:2020.3.16f1c1
AndroidStudio版本:Android Studio Arctic Fox | 2020.3.1 Patch 1.4
首先先了解一个概念,对于安卓应用来说每一个界面都是一个Activity,而Unity打包出来的整个应用对于安卓来说就是一个Activity也就是MainActivity

通过扩展MainActivity导出aar包来与Unity进行交互

1.新建一个Android Studio项目
在这里插入图片描述
2.新建一个模块
在这里插入图片描述
在这里插入图片描述
3.新建一个Activity

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

4.删除layout下的文件
在这里插入图片描述
在这里插入图片描述
删除报红的代码
删除报红
5.找到所用Unity的class文件,复制classes文件
在这里插入图片描述

在这里插入图片描述
粘贴后右键点击
在这里插入图片描述
6.导入UnityPlayerActivity.java文件
在这里插入图片描述
在这里插入图片描述
7.写入测试代码
在这里插入图片描述

package com.sc.testextendlibrary;

import android.os.Bundle;

import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    public  int add(int a,int b){
        //这一行代码是安卓调用unity  第一个参数是unity中脚本挂在的对象,第二个是脚本里面调用的方法
        UnityPlayer.UnitySendMessage("Main Camera","ChangeColor","");
        return  a+b;
    }
}

8.修改AndroidManifest文件,删除不必要的代码
在这里插入图片描述

9.Build,等待编译完成
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选中右键 open in Explorer先复制到桌面
打开 用压缩文件打开aar文件
在这里插入图片描述
在这里插入图片描述

10.新建一个Unity工程
这个是unity2020版本的功能,点击直接生成AndroidManifest文件
在这里插入图片描述
将aar导入Unity
在这里插入图片描述

修改AndroidManifest文件
修改android:name,修改为你在Android Studio所打包的库的包名:com.sc.testextendlibrary+类名:MainActivity(因为是扩展MainActivity类所以类名是MainActivity)
修改这个的目的是调用时在这个类下面启动

在这里插入图片描述
11.创建C#脚本,因为之前java代码写了Main Camera,所以脚本必须挂载到Main Camera上

public class Test : MonoBehaviour
{
    public Text text;
    // Start is called before the first frame update
    void Start()
    {
        try
        {
            //这两句代码是扩展MainActivity 的固定写法
            AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");

            //Unity调用安卓
            text.text = jo.Call<int>("add", 1, 2).ToString();
        }
        catch (Exception e)
        {
            Debug.Log("初始化错误:" + e.ToString());
            text.text = "初始化错误:" + e.ToString();
        }
    }

    public void ChangeColor()
    {
        text.color = Color.red;
    }
}

12.打包 因为之前创建安卓项目是设置的最小的API是8.0 所以这个调成8.0
在这里插入图片描述

这个时候你打包应该不会成功 报错:使用或覆盖了已过时的 API
在这里插入图片描述

这个是因为你aar包里面的jar文件里面的UnityPlayerActivity.class与Unity编辑器的冲突了 删除
如图:
在这里插入图片描述
删除后就可打包成功
测试结果如下图
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值