栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Cocos2d-x

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

Cocos2d-x 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[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("currentActivity");

            //Unity调用安卓
            text.text = jo.Call("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编辑器的冲突了 删除
如图:

删除后就可打包成功
测试结果如下图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/896692.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号