Unity与AndroidStuido方法简单交互

一、新建AndroidStudio工程

 注意语言选择Java,如果没有语言java选项可以在上一步中选择Empty Views Activity

 

二、AndroidStudio BuildGradle配置流程

https://blog.csdn.net/qq_42345116/article/details/117963364

三、导入unity classes.jar包 和 UnityPlayerActivity.java脚本

1.导入classes.jar

图片中有几处classes.jar写成class了 勿怪勿怪

参考地址:

Unity自定义安装路径\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes下

 只是将classes导入文件夹还不行,需要将他添加库才可用 

 

2.添加UnityPlayerActivity.java脚本 

查看Class是否有UnityPlayerActivity.java脚本

注意:如果没有 是因为新版本Unity的UnityPlayerActivity脚本被单独提取出来了,2019版本以上该脚本都被单独提取出来了

参考路径:

Unity自定义安装路径\Editor\Data\PlaybackEngines\AndroidPlayer\Source\com\unity3d\player

友情提示:这个脚本一定要Ctrl+C复制过去,如果不小心剪切过去的话 unity打包会出现问题出现的问题可以参考连接  unity2019打包android出现CommandInvokationFailure: Gradle build failed. 问题_被代码折磨的狗子的博客-CSDN博客 中的问题二

新建文件夹存放UnityPlayerActivity.java脚本

 

四、修改MainActivity.java脚本、AndroidManifest.xml和build.gradle依赖项

1.修改MainActivity.java脚本

 脚本内容如下:

package com.qqlogin.androidtest;
import com.unity3d.player.UnityPlayerActivity;
import android.os.Bundle;

public class MainActivity extends UnityPlayerActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
    }
    //unity中要调用的方法
    public String SendMessage()
    {
        return "Hello word";
    }
}

2.修改 AndroidManifest.xml

原AndroidManifest.xml

 修改后的AndroidManifest.xml

 以下是AndroidManifest.xml具体内容

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.qqlogin.androidtest">

    <application
        android:allowBackup="true"
        android:supportsRtl="true"
        >
        <activity android:name="com.qqlogin.androidtest.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data
                android:name="unityplayer.UnityActivity"
                android:value="true" />
        </activity>
    </application>

</manifest>

3.build.gradle依赖项,不修改build.gradle不会生成aar 生成的是apk 

 修改后的build.gradle

 修改依赖项  否则AndroidStudio打包时会报错

五、删除多余不用文件 打包arr

 1.删除res文件夹下的所有文件

不删除的话打包会出现在aar文件中,导入unity前还是要删除

这是未删除时打包的aar,如果第一次打aar包未删除这些文件时,即使后面删除了aar包中还是会出现这些文件,具体原因我就暂时不知道了,希望有懂得小伙伴讲解一下。

2.生成arr包

 六、处理aar包 导入Unity中

解压后需要删除3个文件

 1.删除libs文件下的classes.jar,是libs文件下 不是 AndroidStudio生成的classes.jar

 2.在压缩包中打开AndroidStudio生成的classes.jar,删除UnityplayerActivity.class

3. 同样在压缩包中打开AndroidStudio生成的classes.jar,删除BuildConfig.class

 aar包需要导入到unity中 unity自带的classes.jar、UnityPlayerActivity.class和BuildConfig.class文件,不删除unity打包会失败

 将处理后的文件 重新压缩为aar包

六、Unity配置及调用方式

1.将aar包和AndroidManifest.xml导入到unity的Plugins/Android文件夹下

AndroidManifest.xml内容直接复制AndroidStudio的AndroidManifest.xml内容即可

2.场景布局

 3.脚本书写 

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

public class Test : MonoBehaviour
{
    public Text txt;
    public Button btn;
    void Start()
    {
        btn.onClick.AddListener(SendMessage);
    }

    void Update()
    {
        
    }

    void SendMessage() 
    {
        AndroidJavaClass javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject javaObject = javaClass.GetStatic<AndroidJavaObject>("currentActivity");
        string rtStr = javaObject.Call<string>("SendMessage");
        txt.text = rtStr;
        Debug.Log("消息:");
        Debug.Log(rtStr);
    }
}

4. 修改unity包名

打开File/Build Settings

 选择Other Settings选项卡修改package Name

 到这配置完成 build打包

 七、打包完毕 导入到模拟器中测试

成功运行 哈哈~~

注意事项:闪退问题原因
1.AndroidManifest.xml的包名与Unity工程的包名不一致

2.Jar包中的MainActivity.java中的包名与Unity工程不一致

文章写的比较详细,也有点多,第一次做也踩了不少坑,所以尽量把我遇到的问题和注意事项写的详细一点。

如果你Android Studio Build Gradle有问题 推荐https://blog.csdn.net/qq_42345116/article/details/117963364

如果是Unity打包配置 推荐

Unity2019.4.4版本安卓打包 配置离线jdk、androidsdk和Gradle_被代码折磨的狗子的博客-CSDN博客

测试apk 链接

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值