1.准备工作 此处有ilcpp与Mono两种路径注意区分【unity版本2020.3.21f1c1】
-classes.jar
-UnityPlayerActivity.java
2.把以上两个文件准备好,后面导入AS使用
【注意19版本的unity把UnityPlayerActivity分离了,不在classes.jar包里面了】
3.调整xml文件代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gzzyy.androidtest">
<application
android:allowBackup="true"
android:supportsRtl="true"
>
<activity android:name="com.gzzyy.androidtest.MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="unityplayer.UnityActivity"
android:value="true" />
</activity>
</application>
</manifest>
4.编写MianActivity代码进行互相通信
package com.gzzyy.androidtest;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
}
// //unity中要调用android的方法
// public String SendMessage()
// {
//
// AndroidCallUnity();
// return "Hello word";
// }
//
// //android调用unity方法
// public void AndroidCallUnity(){
// //第1个参数为Unity场景中用于接收android消息的对象名称
// //第2个参数为对象上的脚本的一个成员方法名称(脚本名称不限制)
// //第3个参数为unity方法的参数
// Toast.makeText(this,"unity调用android成功", Toast.LENGTH_LONG).show();
// UnityPlayer.UnitySendMessage("receiveObj", "UnityMethod", "This is args.");
// }
//unity调用Android
public void UnityCallAndroid () {
AndroidCallUnity();
Toast.makeText(this,"unity调用android成功", Toast.LENGTH_LONG).show();
}
//android调用unity
public void AndroidCallUnity () {
//第1个参数为Unity场景中用于接收android消息的对象名称(名称一定要对应上,要不然接收不到消息)
//第2个参数为对象上的脚本的一个成员方法名称(脚本名称不限制)
//第3个参数为unity方法的参数
UnityPlayer.UnitySendMessage("receiveObj", "UnityMethod", "This is args.");
}
}
5.AS进行编译打包
6.编写unity代码
package com.gzzyy.androidtest;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
}
// //unity中要调用android的方法
// public String SendMessage()
// {
//
// AndroidCallUnity();
// return "Hello word";
// }
//
// //android调用unity方法
// public void AndroidCallUnity(){
// //第1个参数为Unity场景中用于接收android消息的对象名称
// //第2个参数为对象上的脚本的一个成员方法名称(脚本名称不限制)
// //第3个参数为unity方法的参数
// Toast.makeText(this,"unity调用android成功", Toast.LENGTH_LONG).show();
// UnityPlayer.UnitySendMessage("receiveObj", "UnityMethod", "This is args.");
// }
//unity调用Android
public void UnityCallAndroid () {
AndroidCallUnity();
Toast.makeText(this,"unity调用android成功", Toast.LENGTH_LONG).show();
}
//android调用unity
public void AndroidCallUnity () {
//第1个参数为Unity场景中用于接收android消息的对象名称(名称一定要对应上,要不然接收不到消息)
//第2个参数为对象上的脚本的一个成员方法名称(脚本名称不限制)
//第3个参数为unity方法的参数
UnityPlayer.UnitySendMessage("receiveObj", "UnityMethod", "This is args.");
}
}
7.unity Canvas上验证,创建一个button与text的UI并把AS导出的两个文件拖到图示的目录结构下方【请先操作完8,9两步骤】
8.【注意了导出的app-debug文件夹需要特殊处理】
-
删除下图内容
-
删除classes.jar文件
-
好压打开jar包删除两个文件
9.重新整合成aar包
app-debug.aar为新文件名
C:\Users\Win\Desktop\app-debug 文件夹路径
末尾 / . 不要漏掉
C:\Users\Win\Desktop>jar cvf app-debug.aar -C C:\Users\Win\Desktop\app-debug/ .
此处操作完即为最终需要导入到unity中的包
要使用真机才能跑哦