Unity与安卓交互 之 ✨ 在Android Studio中写代码导出aar包,在Unity中使用交互(小白完整篇)「终于解决」

Unity与安卓交互 之 ✨ 在Android Studio中写代码导出aar包,在Unity中使用交互(小白完整篇)「终于解决」这是我参与更文挑战的第3天,活动详情查看: [更文挑战] 在Android Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)

这是我参与更文挑战的第3天,活动详情查看: 更文挑战

在Android Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)

AndroidStudio中的操作步骤: 首先,打开AndroidStudio新建一个工程,版本不同,所以操作的界面跟步骤可能不太一样,但是核心就是包名罢了,其他的一律默认Next带过就行 在这里插入图片描述 在这里插入图片描述 然后就是等它把工程新建完打开工程后,File->New->New Module,选中Android Library,新建一个Module。我这里新建的Module名字是MyunityLibrary。在这里创建一个EmptyActivity,起名为MainActivity,创建好后是这个样子 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

现在这里有两个AndroidManifest,一个是本工程的,还有一个就是新建的unityLibrary的。这里把app的AndroidManifest中红色背景的部分全部复制到另一个AndroidManifest中。

在这里插入图片描述 报红的都删掉。android:label改成想要的应用名字。并且加上这一句:

<meta-data android:name="unityplayer.UnityActivity" android:value="true"/>

如下图配置所示就行 在这里插入图片描述 删除layout下的activity_main.xml文件,并删除刚刚新建的MainActivity中的setContentView(R.layout.activity_main);

在这里插入图片描述 导入Unity的classes.jar文件,我的路径是在D:\Program D:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes下。复制,粘贴到libs目录下。 在这里插入图片描述

选中class.jar->右键->AddAsLibrary->选中unitylibrary->Ok。 在这里插入图片描述

修改刚才创建的MainActivity:使其继承自UnityPlayerActivity,并加一个方法提供给Unity调用。这里写了一个最简单的相加方法。 UnityPlayer.UnitySendMessage是Android调用Unity的方法,第一个参数为挂载脚本游戏物体名,第二个为方法名,第三个为传递参数。 接下来就是导出aar包然后让unity用了。

在这里插入图片描述 Build->Make Project,等待执行完毕。 选中unitylibrary->Build->Make Module”unitylibrary”,等待执行完毕。

在这里插入图片描述 找到build目录下的AndroidMainfest和unitylibrary.aar包,都复制出来。 在这里插入图片描述

打开复制出来的aar包,将外边这个classes.jar剪切到libs文件夹下替换掉libs中原来的classes.jar包

在这里插入图片描述

修改arr包内的AndroidManifest,将android:label这一行删除。如果不删,则会和外面的AndroidManifest冲突。 在这里插入图片描述 然后修改刚才单独复制出来的AndroidMainfest文问:修改报名packet=,此处报名需和等会unity打包时的报名一致即可。(此处尽量修改一下,不要与原来的package一样,因为我设置一样的时候在unity调用的时候可能会找不到android中的方法类,原因可能是aar包中的AndroidMainfest与aar包外的这个AndroidMainfest的package一样导致unity不知道用哪个出错。这是自己猜想的,大家知道尽量不一样就好) 在这里插入图片描述 到了这一步,AndroidStudio中的步骤就算完成了,然后就得到了一个AndroidMainfest.xml和一个自己命名aar包,接下来就是unity中的操作了。

Unity中的操作步骤

在Project下新建一个Plugins/Android两个文件夹,将得到的.xml和aar包放到这个文件夹目录下。这样就把AndroidStudio中拿到的文件配置好了 在这里插入图片描述 接下来在unity中写一个脚本调用安卓中写的方法进行调试,新建一个Text,将脚本挂在Canvas上,建一个Text,用来显示结果。新建脚本调arr包中写好的add方法,把结果显示在text上。这里用了try cash,如果出错方便从手机上直接看到报错信息,实际操作中不需要。 在这里插入图片描述 调试脚本如下,

 AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
 这两行时固定写法,获取安卓相关 
 jo.Call<int>("add", 2, 3);

这一行是调用安卓中的add方法

在这里插入图片描述 接下来就是打包这个unity工程,在player Settings找到这个Package Name 改为在AndroidMainfest中设置的Packagename相同 ,然后Build打包即可。

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

打出apk包,使用手机安装后打开,显示出数字5,证明unity调用Android成功。文本显示红色,证明Android调用unity成功。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13295.html

(0)

相关推荐

  • centos7安装slurm 非root_centos8

    centos7安装slurm 非root_centos8记录在安装过程和碰到的问题,详细的还得访问官网slurm官网slurm中文用户手册1检查网络是否正常检查网卡是否开启将onboot=no=>onboot=yes安装net-tools工具方便查看ipi

    2023-08-04
    88
  • Python访问MySQL[亲测有效]

    Python访问MySQL[亲测有效]Python访问MySQL的步骤 创建connection连接,连接数据库 获取cursor游标对象 执行SQL语句 关闭cursor游标对象 关闭connection连接 import pymys…

    2023-03-24
    115
  • odps sql 参考手册_标签通用检验标准

    odps sql 参考手册_标签通用检验标准对资源打标签在建站过程中是很常见的需求,有些时候我们需要给文章打标签,有些时候我们需要给用户打标签。实现一个标签系统其实并不难,其本质就是一个多对多的关系-我可以对同一篇博客打多个标签,同时也可以把一个标签打到不同的博客身上。这篇文章主要通过分析标签系统的原理,并用Postgr…

    2023-07-28
    88
  • 【数组、双指针】day2_04. 寻找两个正序数组的中位数

    【数组、双指针】day2_04. 寻找两个正序数组的中位数给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (m+n)) 。

    2023-11-13
    77
  • ai行业怎么样_转行人工智能需要学什么

    ai行业怎么样_转行人工智能需要学什么作者 | 章华燕(金桥智慧科技) 前言 近年来,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个IT界。所有的互联网公司,尤其是 Google 微软,百度,腾讯等巨头,无不在布局人工智能技术和市场。百度,腾讯,阿里巴巴,…

    2023-07-21
    87
  • Mysql经典SQL注入(注释法:# 或 –)[亲测有效]

    Mysql经典SQL注入(注释法:# 或 –)[亲测有效]所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的…

    2023-03-07
    98
  • Python中List元素获取索引的方法

    Python中List元素获取索引的方法List是Python中常用的数据类型之一,列表中的每个元素都有一个序号或索引。有时候,我们需要通过元素来获取它在列表中的索引,这时就可以使用Python内置的`index()`函数。

    2024-02-26
    58
  • Python中write()的用法和实例整理

    Python中write()的用法和实例整理Python中的write()方法是文件对象的一种方法,它可以向文件中写入字符串或字节流。在文件对象被创建后,用write()方法向其中写入的内容会原封不动地保存到磁盘上。

    2024-01-21
    56

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注