最新Unity 与Android 交互通信(基于Unity 2019.4 和 Android Studio 4.1.1)
原文章链接: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
- 界面布局

- 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)的更多相关文章
- 【Unity与Android】01-Unity与Android交互通信的简易实现
前言 使用Unity也有不短的时间了,安卓包也打过不少,但是对Unity与Android的交互却知之甚少. 因工作需求,需要在Android平台接一些sdk(扩展功能).我就借此机会就了解了下Unit ...
- [Unity3D]Unity3D游戏开发之Unity与Android交互调用研究
各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...
- Unity3D游戏开发之Unity与Android交互调用研究
各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...
- [Unity3D]Unity+Android交互教程——让手机"动"起来
想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用,真不好使,一导入运行就报错,调好错了再运行发现点按钮没反应,反复试了几遍发现还是 ...
- Unity与Android交互-Unity接入高德地图实现定位以及搜索周边的功能(使用Android Studio)详细操作
刚进公司给安排的任务就是Unity接入高德地图,算是踩了不少坑总算做出来了,抽点时间写个博客记录一下 废话不多说 先上效果图 获取定位并根据手机朝向显示周边信息 使用的Unity ...
- [Unity3D]Unity+Android交互教程——让手机"动"起来
想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用.真不好使,一导入执行就报错.调好错了再执行发现点button没反应.重复试了几遍 ...
- Unity与Android交互实现
主要参考了这篇文章: Unity与Android交互方案优化版 链接:https://www.jianshu.com/p/86b275da600e 自己的实现(unity获取内存和温度): andro ...
- Unity Android交互过坑指南
Unity Android交互过坑指南 介于网上看过很多unity和Android交互的教程,都或多或少的漏掉了一些部分,导致编译过程中出现各种问题,特此整理一份教程,仅供参考 介绍 本次实现的是在游 ...
- [Unity3D]Unity3D游戏开发Android内嵌视图Unity查看
---------------------------------------------------------------------------------------------------- ...
随机推荐
- 《Ray Tracing in One Weekend》阅读笔记 - 9、Metal(金属)
如果我们希望不同的物体使用不同的材料,则需要进行设计决策.我们可以使用具有许多参数的通用材料,而将不同的材料类型仅将其中一些参数归零.这不是一个坏方法.或者我们可以有一个抽象的材料类来封装行为.我是后 ...
- Linux 系统运行着许多子系统和应用程序。您可以使用系统日志记录从启动时就收集有关运行中系统的数据。有时
概述 在本教程中,您将学习以下内容: 配置 syslog 守护程序 了解标准设施.优先级和操作 配置日志轮换 了解 rsyslog 和 syslog-ng 系统内部发生了什么 Linux 系统运行着许 ...
- 使用GitHub绑定域名免费创建自己的博客
通过GitHub创建一个免费的.有上传网页功能的.可以绑定域名的个人博客,或者网站. 在这之前的必要条件: 1.有自己的域名,能添加CNAME或者A记录 2.注册好了GitHub账号 方法: 1.添加 ...
- zabbix添加菜单栏
1.更改字体(中文乱码多半是因为字体不支持中文) define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); // font file name define('ZBX_ ...
- 032.Python魔术方法__new__和单态模式
一 __new__ 魔术方法 1.1 介绍 触发时机:实例化类生成对象的时候触发(触发时机在__init__之前) 功能:控制对象的创建过程 参数:至少一个cls接受当前的类,其他根据情况决定 返回值 ...
- ELK学习实验017:filebeat收集java日志
收集JAVA格式日志 1 查看Java格式日志 elasticsearch属于Java日志,可以收集elasticsearch作为Java日志范本 [root@node3 ~]# tail -f /u ...
- ubuntu中软件的升级管理-(转自Josh_)
给Ubuntu软件升级命令 sudo apt-get update --更新软件源 sudo apt-get upgrade -更新已经安装的软件 以非root用户更新系统 sudo: sudo是l ...
- C/C++ 复习
本文总结一下C++面试时常遇到的问题.C++面试中,主要涉及的考点有 关键字极其用法,常考的关键字有const, sizeof, typedef, inline, static, extern, ne ...
- object_pool对象池
object_pool对象池 object_pool是用于类实例(对象)的内存池,它能够在析构时调用所有已经分配的内存块调用析构函数,从而正确释放资源,需要包含以下头文件: #include < ...
- 用golang刷LeetCode
用golang刷LeetCode 用Go语言刷LeetCode记录,只是为了练习Go语言,能力有限不保证都是最优解,只能在此抛转引玉了. 数据结构和算法 数据结构和算法是程序员的命根子,没了命根子也就 ...