• 注册
  • 后端开发博客 后端开发博客 关注:0 内容:1998

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

  • 查看作者
  • 打赏作者
  • 当前位置: 职业司 > 后端开发 > 后端开发博客 > 正文
    • 后端开发博客
    • 在Android Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)

      「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!」

      AndroidStudio中的操作步骤:

      首先,打开AndroidStudio新建一个工程,版本不同,所以操作的界面跟步骤可能不太一样,但是核心就是包名罢了,其他的一律默认Next带过就行
      在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)
      然后就是等它把工程新建完打开工程后,File->New->New Module,选中Android Library,新建一个Module。我这里新建的Module名字是MyunityLibrary。在这里创建一个EmptyActivity,起名为MainActivity,创建好后是这个样子
      在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)

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

      在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)
      报红的都删掉。android:label改成想要的应用名字。并且加上这一句:

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

      如下图配置所示就行
      在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)
      删除layout下的activity_main.xml文件,并删除刚刚新建的MainActivity中的setContentView(R.layout.activity_main);

      在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)
      导入Unity的classes.jar文件,我的路径是在D:\Program D:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes下。复制,粘贴到libs目录下。
      在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)

      选中class.jar->右键->AddAsLibrary->选中unitylibrary->Ok。
      在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)

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

      在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)
      Build->Make Project,等待执行完毕。
      选中unitylibrary->Build->Make Module"unitylibrary",等待执行完毕。

      在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)
      找到build目录下的AndroidMainfest和unitylibrary.aar包,都复制出来。
      在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)

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

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

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


      Unity中的操作步骤

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

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

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

      在Android  Studio中写代码导出aar包,在Unity中交互调用(小白完整篇)
      接下来就是打包这个unity工程,在player Settings找到这个Package Name 改为在AndroidMainfest中设置的Packagename相同
      ,然后Build打包即可。

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

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

      请登录之后再进行评论

      登录

      手机阅读天地(APP)

      • 微信公众号
      • 微信小程序
      • 安卓APP
      手机浏览,惊喜多多
      匿名树洞,说我想说!
      问答悬赏,VIP可见!
      密码可见,回复可见!
      即时聊天、群聊互动!
      宠物孵化,赠送礼物!
      动态像框,专属头衔!
      挑战/抽奖,金币送不停!
      赶紧体会下,不会让你失望!
    • 实时动态
    • 签到
    • 做任务
    • 发表内容
    • 偏好设置
    • 到底部
    • 帖子间隔 侧栏位置:
    • 还没有账号?点这里立即注册