开发手札:Unity与Android交互

     先祝贺我国疫情基本结束,感谢为疫情奉献热血甚至生命的医护人员!

     接下来进入正题。

     用unity做一个手机app游戏基本上都需要与android和ios交互,比如调用系统函数,调用sdk等。这是unity开发基本操作不用多说,而且unity与android/ios交互的过程网上已经很多了。

     最近业余时间一个半设计工业app差不多做完了,准备接入一些android/ios交互功能,所以记录一下。

     ps:我其实不怎么写日常开发方面的博客,因为网上很多,之所以花时间写这篇unity与android交互,一方面是因为我不是公司专门接sdk的开发人员,所以自己一年也就搞那么一两次吧,记忆力不可靠,而且android studio和xcode一段时间不用变化还是挺大的,所以记录一下,免得忘记了;另一方面,今天一早上我被网上文章坑了两三个小时,大部分文章都有很多细节遗漏或错误,所以我还是自己写一篇博客吧,免得以后浪费时间。

     我会将操作写的很详细,标识也会很细致。

     准备工具:

     1.unity2018.3.13f1

     开发手札:Unity与Android交互_第1张图片

     2.android studio3.4.1

    

     需求目的:

     完成android studio(后面简称as)导出aar文件到unity进行功能交互

     具体过程:

     1.as新建项目

      开发手札:Unity与Android交互_第2张图片

开发手札:Unity与Android交互_第3张图片

新建as项目完毕,名称:sdktest,包名:com.tomatopotato(我独立工作室名,无需填写额外的产品名称)

 2.引入unity的classes.jar文件

 开发手札:Unity与Android交互_第4张图片

  找到unity安装目录下的classes.jar

  默认使用il2cpp版本,我想应该没人使用mono版本打包了吧?

  开发手札:Unity与Android交互_第5张图片

 拷贝classes.jar到as工程libs下

 

as点击同步工程

 开发手札:Unity与Android交互_第6张图片

 如果各位as工程中看不到libs等文件夹的情况下,直接右键右键右键jump to source就能展开所有文件列表了。

 3.修改as配置

 开发手札:Unity与Android交互_第7张图片

  修改为:

 开发手札:Unity与Android交互_第8张图片

  这样我们就能打包aar包。

开发手札:Unity与Android交互_第9张图片

  修改androidminafest.xml文件:

 开发手札:Unity与Android交互_第10张图片

 为了怕遮挡文本,所以我不标红(我同时随便添加了一个permission权限演示)。

 4.删除res下不需要的文件

开发手札:Unity与Android交互_第11张图片

 删除标蓝色的文件

 继续同步一下

5.开始写代码

我们随便写两个功能,一个弹消息,一个打开相册

开发手札:Unity与Android交互_第12张图片

 代码如上

 6.修改activity_main.xml文件

开发手札:Unity与Android交互_第13张图片

  修改为:

开发手札:Unity与Android交互_第14张图片

  为了不遮挡文本,我不标红。

  开发手札:Unity与Android交互_第15张图片

  继续同步工程。

  7.开始打包aar

  开发手札:Unity与Android交互_第16张图片

  打包aar文件。

  开发手札:Unity与Android交互_第17张图片

  得到aar文件包。

  开发手札:Unity与Android交互_第18张图片

  随便用个压缩程序打开aar包,删除掉libs/classes.jar文件

  8.unity工程调用演示

    创建一个unity test工程,修改android配置信息

    开发手札:Unity与Android交互_第19张图片

    开发手札:Unity与Android交互_第20张图片

    配制好包名,产品名。

    开发手札:Unity与Android交互_第21张图片

     开发手札:Unity与Android交互_第22张图片

    开发手札:Unity与Android交互_第23张图片

    将as工程的aar和androidmanifest文件拷贝到unity工程plugins/android下

   

   开发手札:Unity与Android交互_第24张图片

   打开androidmanifest.xml文件,注销launcher语句。

  

    接下来开始写c#代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PhonePlugin : MonoBehaviour
{
    void Start()
    {
        
    }

    void OnGUI()
    {
        if (GUI.Button(new Rect(0, 0, 200, 200), "Toast"))
        {
            AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject ajo = ajc.GetStatic("currentActivity");
            ajo.Call("ShowToast", "unity msg");
        }
        if (GUI.Button(new Rect(300, 0, 200, 200), "Album"))
        {
            AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject ajo = ajc.GetStatic("currentActivity");
            ajo.Call("OpenAlbum");
        }
    }
}

    ok,一切就绪,打包android apk文件。

    开发手札:Unity与Android交互_第25张图片

  

   得到apk文件,发送到我的一台老旧不用的android手机上安装。

    

     下面是真机测试:

   

     

       好了,这就是细致的unity和android交互流程,当然只是为了记录演示交互做法,所以并不做复杂的功能的demo,大家需要什么功能百度写代码即可。

       后话,我最近业余时间做了一个app,对学习很有帮助,估计还要一段时间上线。

       2022年4月7日,新增新版本AndroidStudio和Unity操作,如下:

开发手札:Unity与Android交互_第26张图片

       新版本的AS工程,直接extend UnityPlayerActivity是不行,这时候必须得在classes.jar右键AddAsLibrary,如下:

           这时候才可以完成所有AS引用,然后BuildProject成功

 开发手札:Unity与Android交互_第27张图片

           好,最近半年都备考英语证书,所以没时间写博客了,只记录容易忘记的

你可能感兴趣的:(开发手札,unity)