unity 调用高德SDK

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有报错提示,比较方便)

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值