开发手札: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

    

     2.android studio3.4.1

    

     需求目的:

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

     具体过程:

     1.as新建项目

     

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

 2.引入unity的classes.jar文件

 

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

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

 

 拷贝classes.jar到as工程libs下

 

as点击同步工程

 

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

 3.修改as配置

 

  修改为:

 

  这样我们就能打包aar包。

  修改androidminafest.xml文件:

 

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

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

 删除标蓝色的文件

 继续同步一下

5.开始写代码

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

 代码如上

 6.修改activity_main.xml文件

  修改为:

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

 

  继续同步工程。

  7.开始打包aar

 

  打包aar文件。

 

  得到aar文件包。

 

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

  8.unity工程调用演示

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

   

   

    配制好包名,产品名。

   

    

   

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

   

  

   打开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<AndroidJavaObject>("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<AndroidJavaObject>("currentActivity");
            ajo.Call("OpenAlbum");
        }
    }
}

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

   

  

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

    

     下面是真机测试:

   

     

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

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

  

猜你喜欢

转载自blog.csdn.net/yinhun2012/article/details/105295754