Unity安卓开发(三)Android Studio导出Jar包、扩展Unity的MainActivity、Unity Android互相调用

在Android Studio创建项目

创建一个新项目

在这里插入图片描述
点击下一步,Phone and Tablet选择API16,因为Unity最低支持API16 在这里插入图片描述
下一步后,选择Empty Activity
在这里插入图片描述
下一步,默认即可
在这里插入图片描述
下一步,再点击完成,创建项目完成。

在该项目创建新的模块

1、点击文件——>New——>New Module
在这里插入图片描述
2、点击Android Library,点击下一步
在这里插入图片描述
3、填写Library name(名字可以自己填),Minimum SDK选择API16
在这里插入图片描述
4、为刚刚创建的库新建一个Activity
在这里插入图片描述
在这里插入图片描述
5、我们想要扩展Unity的MainActivity,因此需要删掉在Android Studio创建的这个Activity里的布局xml(Activity_main.xml),防止跟Unity的冲突
在这里插入图片描述
再在MainActivity.java里删掉代码:setContentView(R.layout.activity_main);
在这里插入图片描述

导入Unity支持包

1、找到Unity的安装目录,找到Unity的classes.jar包,以我电脑的路径为例:C:\Program Files\Unity\Unity2018_3_4f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes
在这里插入图片描述
2、复制classes.jar,到Android Studio里,切换到Project,找到刚刚创建的那个新的模块unitylibrary,把classes.jar复制到libs下
在这里插入图片描述
3、鼠标右键选中添加进去的classes.jar,选中Add As Library
在这里插入图片描述
弹出窗口后,选择我们新建的模块unitylibrary,按确定
在这里插入图片描述

修改AndroidManifest

1、AndroidManifest简介
AndroidManifest官方解释是应用清单(manifest意思是货单),每个应用的根目录中都必须包含一个,并且文件名必须一模一样。这个文件中包含了APP的配置信息,系统需要根据里面的内容运行APP的代码,显示界面。
2、如何修改AndroidManifest?
我们可以参考app里的AndroidManifest,打开app里的AndroidManifest,把application的那一段全部复制过来
在这里插入图片描述
粘贴替换到unitylibrary的AndroidManifest的application里
在这里插入图片描述
然后把报红的都删掉
在这里插入图片描述
3、修改app_name,应用安装时显示的名字
在这里插入图片描述
4、标志这个Activity的类型是Unity用的,在后加上下面这一句话:

在这里插入图片描述

开始在MainActivity.java写方法

1、修改MainActivity继承UnityPlayerActivity,把AppCompatActivity改为UnityPlayerActivity
在这里插入图片描述
2、现在可以在MainActivity.java写给Unity的方法,以给Unity提供一个简单的加法方法为例:
在这里插入图片描述
3、选中unitylibrary,点击Build——>Make Module ‘unitylibrary’,编译模块
在这里插入图片描述
4、把Unity需要的东西复制出来
选中unitylibrary,鼠标右键,show in Explorer
在这里插入图片描述
弹出文件夹后打开unitylibrary/build/intermediates/packaged-classes/debug
把文件夹的classes.jar拖到文件夹libs里,替换libs文件夹的classes.jar(libs文件夹的classes.jar是我们在Unity复制出来的,最终编译出来的是外面的这个),替换完成后,把libs复制到其他文件夹(我在桌面上创建了一个文件夹UnityAndroidTestJar)保存这些文件,以便Unity使用。
在这里插入图片描述
返回到intermediates文件夹,打开packaged_res/debug,在文件夹UnityAndroidTestJar里创建一个res文件夹,把packaged_res/debug里的values文件夹复制到新建的res文件夹里面。
在这里插入图片描述
返回到intermediates文件夹,打开merged_manifests/debug/processDebugManifest/merged,把AndroidManifest.xml复制到文件夹UnityAndroidTestJar里
在这里插入图片描述
现在文件夹已经包含了两个文件夹和一个xml文件了,我们需要对xml文件进行修改就可以在Unity使用了
在这里插入图片描述
打开AndroidManifest.xml,把package="com.unityandroidtest.lst.unitylibrary"的包名改为Unity使用的包名。
在这里插入图片描述

Unity调用Android

1、把Android Studio导出的两个文件夹和xml文件拖给Unity的工程里
在Unity工程里创建一个plugins文件夹,该文件夹下再创建一个Android子文件夹,再把Android Studio导出的两个文件夹和xml文件拖到Android子文件夹里
在这里插入图片描述
2、在Unity创建一个脚本使用该jar包

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    void Start()
    {
        //获得位于com.unity3d.player包下的UnityPlayer类
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        //获得jc所代表的类下的currentActivity对象
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        //由于是扩展Unity的MainActivity,Unity的MainActivity是在包名为com.unity3d.player的UnityPlayer类里的
        //所以上面两句都是固定的写法

        //调用Android Studio导出的方法
        //jo.Call<返回值类型>("方法名",传入值1,传入值2......);
        int jarReturn = jo.Call<int>("add",1,5);

    }
}

Android调用Unity

对于扩展Unity的MainActivity,想要在Android Studio里调用Unity的方法可以使用:

UnityPlayer.UnitySendMessage(“string”,“string”, ***);

我们至少需要传入两个参数,第一个参数为unity中的一个gameobject名称,第二个参数为这个gameobject身上捆绑的脚本中的一个方法,而第三参数事实上是这个对应方法上的参数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值