unity 2022.2.20f1c1
一、准备工作:
方式一:Unity打包arr 导入AndroidStudio ,AndroidStudio打包
方式二:Unity通过MainActivity.java调用SDK ,MainActivity.java 放入到Android Studio中编写代码
二、打包环境:下载jdk11和ndk-r23b
三、交互部分
1、高德SDK下载:相关下载-Android 地图SDK|高德地图API (amap.com)
2、将高德sdk导入unity中,放置Plugins/Android下
3、unity 如何和sdk交互 ?通过MainActivity.java
MainActivity如何编写代码?通过Android Studio
第一步:AndroidStudio 新建工程,复制高德Sdk,黏贴到libs文件夹下,然后右键 Add as Library
第二步:导入unity的Classes.jar 和UnityPlayerActivity
unity的位置:不要安装在C盘,有时候会有权限问题
Classes 的包有很多个,根据打包是选择是il2cpp还是mono
第三步:创建MainActivity.java并继承UnityPlayerActivity
然后在MainActivity 写方法,给unity调用:
(这里可以借鉴一下)(7条消息) Unity2019.3.3与Android Studio 3.6.1 交互通信_StarNight16的博客-CSDN博客)
package com.xiaoma.u2a;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
import com.unity3d.player.UnityPlayer;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
//unity调用Android
public void UnityCallAndroid () {
Toast.makeText(this,"unity调用android成功", Toast.LENGTH_LONG).show();
AndroidCallUnity();
}
//android调用unity
public void AndroidCallUnity () {
//第1个参数为Unity场景中用于接收android消息的对象名称
//第2个参数为对象上的脚本的一个成员方法名称(脚本名称不限制)
//第3个参数为unity方法的参数
UnityPlayer.UnitySendMessage("receiveObj", "UnityMethod", "This is args.");
}
}
创建一个SDKTest.cs文件,将脚本挂在receiveObj对象上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SDKTest : MonoBehaviour
{
private AndroidJavaClass jc;
private AndroidJavaObject jo;
private Button btn;
private Text text;
private void Awake()
{
btn = transform.Find("Button").GetComponent<Button>();
text = transform.Find("Text").GetComponent<Text>();
//这两行是固定写法
jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
btn.onClick.AddListener(OnBtnClickHandler);
}
private void OnBtnClickHandler ()
{
//调用Android中的方法UnityCallAndroid
jo.Call("UnityCallAndroid");
}
/// <summary>
/// 被Android中AndroidCallUnity调用
/// </summary>
/// <param name="str"></param>
public void UnityMethod(string str)
{
Debug.Log("UnityMethod被调用,参数:" + str);
text.text = str;
}
}
第四步:拷贝MainActivity.java 复制到unity
第五步:修改:AndroidManifest.xml
可以放在Android Studio 中编写好,再拷贝出来(AndroidStudio有报错提示,比较方便)