文章目录
一、前言
此处介绍的是将安卓工程作为一个aar库交给Unity调用,并实现安卓与Unity的交互。
开发环境:Unity2021.3.13;
Android Studio;
Android Gradle Plugin Version8.1.2;
Gradle Version 8.0;
Android SDK 33
二、Android Studio
1. 创建安卓工程
2. 导入Unity/Classes.jar
Unity的Classes.jar文件的位置是D:\Unity\2021.3.13f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar
3. 创建Module
将步骤2的Classes.jar复制到新建的Module下libs文件夹下,并执行“Add as Library”
4. 交互接口实现
在main下的主包下创建与Unity交互的类,里面的方法全部为静态方法。
注意:UnityPlayer.UnitySendMessage(“AndroidMessageManager”,“ReceiveAndroidMsg”,msg)方法中
AndroidMessageManager是Unity中用来接收的对象名称,ReceiveAndroidMsg是该对象身上挂载脚本中的接收消息的方法,msg的消息字符串。
public class UnityMessageLib
{
//接收来自Unity的消息
public static void ReceiveUnityMsg(String msg)
{
SendToUnity("Android成功接收来自Unity的消息:"+msg);
}
//向Unity发送消息
public static void SendToUnity(String msg){
UnityPlayer.UnitySendMessage("AndroidMessageManager","ReceiveAndroidMsg",msg);
}
}
5. 编译Module,导出aar库
6. 删除aar库中多余的文件(此步骤很重要,如果不删除再Unity中会出现多余引用)
使用解压缩工具打开这个aar包,将第一层目录下的AndroidMainfest.xml删掉,再将libs/classes.jar删掉,然后保存。
二、Unity
1.导入安卓aar库
将上一步产生的aar包导入到UnityAssets/Plugins/Android/目录下,注意文件夹名称不能拼错
2.交互接口实现
在场景中创建空对象“AndroidMessageManager”,并且此对象身上挂载的脚本必须有“ReceiveAndroidMsg”方法,名称与一(4)步骤中对应。
通过点击按钮触发“SendToAndroid”来向安卓发送消息,安卓端收到消息后立刻通过“ReceiveAndroidMsg”方法告知Unity自己收到。
3.打包APK
①Player/Other Setting/Configuration-Scripting Backend选项必须与一(2)步骤中的classes.jar的上层目录类型相同。即:在Mono目录下复制的classes.jar那此处选项也必须是Mono;
②注意一下版本号
运行成功!!
三、报错处理
1.R8报错
解决方法:①打开PlayerSetting/Player/Publishing Setting中的“Custem Base Gradle Template”勾选上
②接下来会在Plugins/Android/目录下生成一个“baseProjectTemplate.Gradle”文件,双击打开这个文件,将下图中圈红的部分改成“3.4.0”