原文章链接:https://blog.csdn.net/woshihaizeiwang/article/details/115395519

CLSays:网上找了一圈,真的是很多都不能用,要么太老,要么操作到最后就不行了,真的是浪费我好多时间。记录一下,希望接下来的人看到这篇文章少走弯路。

1. 新建android 项目

2.新建Module,制作成library



给library取个名字myandroidsdk:

3.新建一个class用来供给Unity 反射调用


UnityToAndroid.class :

package com.example.myandroidsdk;

import android.app.Activity;
import android.widget.Toast; public class UnityToAndroid {
/**
* unity项目启动时的的上下文
*/
private Activity _unityActivity;
/**
* 获取unity项目的上下文
*
* @return
*/
Activity getActivity() {
if (null == _unityActivity) {
try {
Class<?> classtype = Class.forName("com.unity3d.player.UnityPlayer");
Activity activity = (Activity) classtype.getDeclaredField("currentActivity").get(classtype);
_unityActivity = activity;
} catch (ClassNotFoundException e) { } catch (IllegalAccessException e) { } catch (NoSuchFieldException e) { }
}
return _unityActivity;
}
/**
* Toast显示unity发送过来的内容
*
* @param content 消息的内容
* @return 调用是否成功
*/
public boolean showToast(String content) {
Toast.makeText(getActivity(), content, Toast.LENGTH_SHORT).show();
//这里是主动调用Unity中的方法,该方法之后unity部分会讲到
return true;
}
}

4.打包android library,产生aar文件供给Unity使用


直接根据上图所示操作,就能产生aar了,废话不多说,直接上图

5.上面的操作是打出了一个aar可以供给Unity使用,在Unity项目目录下新建Plugins/Android 文件夹,将上面的aar放入其中。

6.编写Unity简单demo,调用Android的Toast

  1. 界面布局
  2. c# 代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class SDKTest : MonoBehaviour
{
private AndroidJavaObject jo; private Button btn; private void Awake()
{
btn = transform.Find("Button").GetComponent<Button>(); //这两行是固定写法
jo = new AndroidJavaObject("com.example.mysdk.Unity2Android"); btn.onClick.AddListener(OnBtnClickHandler);
} private void OnBtnClickHandler()
{
//调用Android中的方法UnityCallAndroid
Debug.Log("调用android 的方法");
bool success = jo.Call<bool>("showToast", "this is unity");
if (true == success)
{
//请求成功
Debug.Log("调用android 的方法成功");
}
else
{
Debug.Log("调用android 失败");
}
} public void UnityMethod(string str)
{
Debug.Log("UnityMethod被调用,参数:" + str);
}
}

7.运行Unity项目到Android手机上

最新Unity 与Android 交互通信(基于Unity 2019.4 和 Android Studio 4.1.1)的更多相关文章

  1. 【Unity与Android】01-Unity与Android交互通信的简易实现

    前言 使用Unity也有不短的时间了,安卓包也打过不少,但是对Unity与Android的交互却知之甚少. 因工作需求,需要在Android平台接一些sdk(扩展功能).我就借此机会就了解了下Unit ...

  2. [Unity3D]Unity3D游戏开发之Unity与Android交互调用研究

    各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...

  3. Unity3D游戏开发之Unity与Android交互调用研究

    各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...

  4. [Unity3D]Unity+Android交互教程——让手机"动"起来

    想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用,真不好使,一导入运行就报错,调好错了再运行发现点按钮没反应,反复试了几遍发现还是 ...

  5. Unity与Android交互-Unity接入高德地图实现定位以及搜索周边的功能(使用Android Studio)详细操作

    刚进公司给安排的任务就是Unity接入高德地图,算是踩了不少坑总算做出来了,抽点时间写个博客记录一下 废话不多说 先上效果图 获取定位并根据手机朝向显示周边信息            使用的Unity ...

  6. [Unity3D]Unity+Android交互教程——让手机&quot;动&quot;起来

    想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用.真不好使,一导入执行就报错.调好错了再执行发现点button没反应.重复试了几遍 ...

  7. Unity与Android交互实现

    主要参考了这篇文章: Unity与Android交互方案优化版 链接:https://www.jianshu.com/p/86b275da600e 自己的实现(unity获取内存和温度): andro ...

  8. Unity Android交互过坑指南

    Unity Android交互过坑指南 介于网上看过很多unity和Android交互的教程,都或多或少的漏掉了一些部分,导致编译过程中出现各种问题,特此整理一份教程,仅供参考 介绍 本次实现的是在游 ...

  9. [Unity3D]Unity3D游戏开发Android内嵌视图Unity查看

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. 吃透KVM创建虚机和KVM命令

    1.创建虚拟机 1.1创建虚拟机磁盘 #使用qemu命令来创建磁盘 qemu-img create -f qcow2 /var/lib/libvirt/images/centos7.2.qcow2 2 ...

  2. micro 从cli的tag中获取配置

    官方文档: https://micro.mu/docs/go-config.html https://github.com/micro/go-micro/tree/master/config/sour ...

  3. [bug] Python:“TabError: inconsistent use of tabs and spaces in indentation”

    原因 代码中混用了Tab和4个空格 参考 https://blog.csdn.net/dongdong9223/article/details/82745068

  4. [DB] Redis

    为什么用Redis 是什么 一个小程序 缓存 & 数据库 单线程worker 新版本:IO threads epoll:多路复用 与Memcache区别 支持持久化:RDB快照.AOF日志 丰 ...

  5. du -cs /var/lib/BackupPC/pc/10.1.60.211/目录名

    # du -cs /var/lib/BackupPC/pc/10.1.60.211/7870236 /var/lib/BackupPC/pc/10.1.60.211/7870236 总用量  

  6. Linux 部署 iSCSI 服务端

    Linux 部署 iSCSI 服务端 服务端实验环境 iSCSI-server :RHEL8 IP:192.168.121.10 一.服务端安装 target 服务和 targetcli 命令行工具 ...

  7. 文本编辑_Vim&Vi

    一.Vim.Vi文本编辑器 1️⃣:vi: Visual Interface,文本编辑器 2️⃣:文本:ASCII, Unicode 3️⃣:VIM - Vi IMproved 二.Vim.vi的特点 ...

  8. STM32 keil中编译遇到的问题

    发现 移植的SPI程序 说里面的 SPI_InitTypeDef 所有有关  SPI库函数的都找不到 这是因为 用的是  原子的程序   在 config函数中  把这个注释了

  9. STM32 中的HARDFAULT 的查找方法

    http://blog.csdn.net/zyboy2000/article/details/7668331

  10. 写Bug时,需要注意的几点3

    在对象之间搬移特性 类往往会因为承担过多责任而变得臃肿不堪. (Move Method)搬移函数 含义:在程序中,里面的一个函数与其类外面的一个类或函数有着紧密的调用或者被调用,则需要对其函数内部的表 ...