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 链接

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Unity是一款跨平台的游戏引擎,可以用来开发各种类型的游戏和应用程序。Android Studio是一个专门用于开发Android应用程序的集成开发环境(IDE),提供了丰富的工具和功能来帮助开发人员创建高质量的Android应用程序。百度地图是一款基于位置服务的地图应用,可以提供定位、导航、交通状况等功能。 使用UnityAndroid Studio结合起来开发应用程序,可以充分发挥两者的优势。Unity可以用来创建游戏场景、物体和特效,可以方便地进行游戏逻辑和交互设计。而Android Studio则可以用来编写Android应用的Java代码,进行应用程序的逻辑开发和界面设计。通过结合使用UnityAndroid Studio,开发人员可以实现更复杂、更丰富的应用程序。 百度地图提供了丰富的API和SDK,可以方便地在UnityAndroid Studio中集成使用。通过百度地图的API和SDK,开发人员可以在应用程序中添加地图显示、定位、搜索、导航等功能。例如,可以在Unity中创建一个游戏场景,然后使用百度地图的SDK将地图显示在场景中。同时,可以使用百度地图的API获取用户的位置信息,实现定位功能。还可以使用百度地图的搜索功能,让用户可以在应用程序中搜索地点,并进行导航。 总之,将UnityAndroid Studio和百度地图结合起来使用,可以实现更丰富、更具交互性的应用程序开发。无论是游戏还是其他类型的应用,这种结合可以提供更好的用户体验和更多的功能选择。 ### 回答2: Unity是一款跨平台的游戏引擎,而Android Studio则是一款集成开发环境(IDE),用于开发安卓应用程序。而百度地图是一款提供地理位置和导航服务的应用程序接口(API)。 UnityAndroid Studio可以结合使用来开发基于地图的游戏和应用。在Unity中,我们可以使用Unity的内置功能和插件来创建一个虚拟的游戏世界,并将百度地图的数据集成到游戏中。例如,在一个虚拟城市的游戏中,我们可以使用百度地图的API来获取真实世界的建筑和道路信息,并将其添加到游戏世界中,以增强游戏的逼真感。 Android Studio作为一个强大的开发工具,可以用于开发基于百度地图的安卓应用。我们可以使用Android Studio的界面设计工具和编码功能来构建一个用户友好的应用程序,并使用百度地图的API来获取用户位置、显示地图和提供导航功能。例如,我们可以开发一个实时公交查询应用,在用户身边显示附近的公交站点和实时公交车位置,并提供路线规划和导航功能。 总之,UnityAndroid Studio是两个强大的工具,可以与百度地图API结合使用,来开发出有趣、实用的地图相关的游戏和应用程序。通过充分发挥它们的优势,我们可以创造出更好的用户体验和更丰富的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值