先祝贺我国疫情基本结束,感谢为疫情奉献热血甚至生命的医护人员!
接下来进入正题。
用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("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文件。
得到apk文件,发送到我的一台老旧不用的android手机上安装。
下面是真机测试:
好了,这就是细致的unity和android交互流程,当然只是为了记录演示交互做法,所以并不做复杂的功能的demo,大家需要什么功能百度写代码即可。
后话,我最近业余时间做了一个app,对学习很有帮助,估计还要一段时间上线。
2022年4月7日,新增新版本AndroidStudio和Unity操作,如下:
新版本的AS工程,直接extend UnityPlayerActivity是不行,这时候必须得在classes.jar右键AddAsLibrary,如下:
这时候才可以完成所有AS引用,然后BuildProject成功
好,最近半年都备考英语证书,所以没时间写博客了,只记录容易忘记的