Unity3D与Android的交互通信(Unity3D)

简介: 这篇文章主要讲的是如何使用Android Studio与Unity的交互通信。主要内容有如何在Android Studio创建工程,如何设置,以及如何导出。以及在Unity调用Android的方法。

一、前言

这篇文章主要讲的是如何使用Android Studio与Unity的交互通信。主要内容有如何在Android Studio创建工程,如何设置,以及如何导出。以及在Unity调用Android的方法。


二、参考资料

  1. Unity与Android通信 blog.csdn.net/qq_33747722…
  2. Unity和Android相互通信 blog.csdn.net/qq_15267341…
  3. [Unity][安卓]Unity和Android Studio 3.0 交互通讯(1)Android Studio 3.0 设置 blog.csdn.net/bulademian/…


三、目录

  • 新建Android项目
  • 新建Android模板Module
  • 导入加载jar文件
  • 修改AndroidMainfest.xml文件
  • 修改MainActivity文件
  • 编译构建项目
  • 导入Unity
  • Unity调用Android项目方法


四、正文


1、新建Android项目

Fiele->New->New Project

网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|
点击 FINISH 按钮,新建工程。
网络异常,图片无法展示
|


2、新建Android模板Module

右键项目 New->Module

网络异常,图片无法展示
|

选择Android Library

网络异常,图片无法展示
|

这个地方可以设置模块的名字

网络异常,图片无法展示
|

点击Finsh就可以了

网络异常,图片无法展示
|

如果不小心写错模块名字了,想删除了,就右键 Open Module Settings

网络异常,图片无法展示
|

删除就行了

网络异常,图片无法展示
|


3、导入加载外部jar文件

这个有三种加载外部jar文件的方法,这边只采用第一种,剩余方法可以参考我另一篇文章。 【Android Studio】导入外部jar包【blog.csdn.net/q764424567/…切换到Project视图

网络异常,图片无法展示
|

找到libs文件夹

网络异常,图片无法展示
|

将你自己要使用的jar包拖进去(复制粘贴也行)

网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|

右击Jar文件,点击Add As Library后,在出现的弹出框点击确定即可

网络异常,图片无法展示
|

添加成功 导入成功的jar包

网络异常,图片无法展示
|

打开build.gradle文件,可以看到最后一行添加成功的代码

网络异常,图片无法展示
|
网络异常,图片无法展示
|


4、将Unity的classes.jar加载到项目中去

classes.jar这个文件,直接可以在Unity的安装目录中搜索,找到之后复制粘贴到项目的libs文件中

网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|

OK了

网络异常,图片无法展示
|


5、 新建MainActivity

切换到Android视图,然后展开unity_exchange->java->右键第一个文件夹

网络异常,图片无法展示
|
网络异常,图片无法展示
|

不做任何 处理,点击 FINISH 按钮后。

就新建了MainActivity ,右边是初始脚本。

网络异常,图片无法展示
|


6、修改AndroidMainfest.xml文件

1.先把unity_exchange下面res文件夹中的layout下面的activity_main_xml删除

网络异常,图片无法展示
|
如果有报错
网络异常,图片无法展示
|

就把MainActivity.java脚本中的

网络异常,图片无法展示
|

这一行注释掉


2.修改unity_exchange目录下的mainfests文件中的AndroidManifest.xml

打开app目录下的manifests文件夹中的AndroidManifest.xml

网络异常,图片无法展示
|

复制这一段代码

粘贴到unity_exchange->manifest->AndroidManifest.xml

网络异常,图片无法展示
|


7、修改MainActivity文件

网络异常,图片无法展示
|
网络异常,图片无法展示
|

这个时候,如下所示。

网络异常,图片无法展示
|

改为如下所示。

网络异常,图片无法展示
|

下面就是在Android中编写Unity要调用的方法了,例如我这里只写一个简单的两数求和的方法:


网络异常,图片无法展示
|
网络异常,图片无法展示
|


8、编译构建项

1.编译 选中 unity_exchange 点击build -- Make Module 'unityexchange'

网络异常,图片无法展示
|

等待一下,就会显示如下所示。如果没有,就重新试几次。

网络异常,图片无法展示
|

使用 Build -- Make Project 或者 Build -- Rebuild Project 重新编译工程。 切換到Project视图,可以看到build文件中有一个packaged-classes文件夹,不同版本的Android Stuido可能文件夹名字不一样,百度一下就知道了

网络异常,图片无法展示
|

右键show in explorer,打开文件夹到当前目录

网络异常,图片无法展示
|


2.把classes.jar移动到libs文件夹中

网络异常,图片无法展示
|



3.将AndroidManifest.xml和res文件夹,复制到这个文件夹中 AndroidManifest.xml在

网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|


9、导入Unity

新建Unity工程 在工程目录创建Plugins->Android 然后将上图中的3个文件复制过来

网络异常,图片无法展示
|


10、Unity调用Android项目方法


1.新建test1.cs挂载在Main Camera上面

网络异常,图片无法展示
|


2.编写代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class test1 : MonoBehaviour
{
    private Transform cantrans;//Canvas
    private Text text;//text
    private Button button;//按钮
    private AndroidJavaObject jo = null;
    private InputField input1;
    private InputField input2;
    void Start()
    {
        //固定写法
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        cantrans = GameObject.Find("Canvas").transform;
        text = cantrans.Find("Text").GetComponent<Text>();
        button = cantrans.Find("Button").GetComponent<Button>();
        input1 = cantrans.Find("InputField").GetComponent<InputField>();
        input2 = cantrans.Find("InputField2").GetComponent<InputField>();
        button.onClick.AddListener(OnClick);
    }
    //按钮方法
    public void OnClick()
    {
        text.text = "";
        int res = jo.Call<int>("Add", int.Parse(input1.text), int.Parse(input2.text));
        text.text = res.ToString();
    }
}
复制代码


3.制作UI

网络异常,图片无法展示
|


4.打包发布

复制AndroidManifest.xml中这一行代码

网络异常,图片无法展示
|

粘贴到这里

网络异常,图片无法展示
|

发布,运行



相关文章
|
2月前
|
Java Linux Android开发
移动应用开发与操作系统的交互:深入理解Android和iOS
在数字时代,移动应用成为我们日常生活的一部分。本文将深入探讨移动应用开发的核心概念、移动操作系统的工作原理以及它们如何相互作用。我们将通过实际代码示例,展示如何在Android和iOS平台上创建一个简单的“Hello World”应用,并解释其背后的技术原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和知识。
|
3月前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
182 3
|
4月前
|
图形学 Android开发 iOS开发
穿越数字洪流,揭秘Unity3d中的视频魔法!Windows、Android和iOS如何征服RTSP与RTMP的终极指南!
【8月更文挑战第15天】在数字媒体的海洋中,实时视频流是连接世界的桥梁。对于那些渴望在Unity3d中搭建这座桥梁的开发者来说,本文将揭示如何在Windows、Android和iOS平台上征服RTSP与RTMP的秘密。我们将深入探讨这两种协议的特性,以及在不同平台上实现流畅播放的技巧。无论你是追求稳定性的RTSP拥趸,还是低延迟的RTMP忠实粉丝,这里都有你需要的答案。让我们一起穿越数字洪流,探索Unity3d中视频魔法的世界吧!
76 2
|
4月前
|
Java 网络安全 开发工具
UNITY与安卓⭐一、Android Studio初始设置
UNITY与安卓⭐一、Android Studio初始设置
|
4月前
|
XML Android开发 UED
"掌握安卓开发新境界:深度解析AndroidManifest.xml中的Intent-filter配置,让你的App轻松响应scheme_url,开启无限交互可能!"
【8月更文挑战第2天】在安卓开发中,scheme_url 通过在`AndroidManifest.xml`中配置`Intent-filter`,使应用能响应特定URL启动或执行操作。基本配置下,应用可通过定义特定URL模式的`Intent-filter`响应相应链接。
125 12
|
4月前
|
图形学 Android开发
小功能⭐️Unity调用Android常用事件
小功能⭐️Unity调用Android常用事件
|
3月前
|
vr&ar 图形学 API
Unity与VR控制器交互全解:从基础配置到力反馈应用,多角度提升虚拟现实游戏的真实感与沉浸体验大揭秘
【8月更文挑战第31天】虚拟现实(VR)技术迅猛发展,Unity作为主流游戏开发引擎,支持多种VR硬件并提供丰富的API,尤其在VR控制器交互设计上具备高度灵活性。本文详细介绍了如何在Unity中配置VR支持、设置控制器、实现按钮交互及力反馈,结合碰撞检测和物理引擎提升真实感,助力开发者创造沉浸式体验。
196 0
|
3月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
160 0
|
3月前
|
图形学 开发者 UED
Unity游戏开发必备技巧:深度解析事件系统运用之道,从生命周期回调到自定义事件,打造高效逻辑与流畅交互的全方位指南
【8月更文挑战第31天】在游戏开发中,事件系统是连接游戏逻辑与用户交互的关键。Unity提供了多种机制处理事件,如MonoBehaviour生命周期回调、事件系统组件及自定义事件。本文介绍如何有效利用这些机制,包括创建自定义事件和使用Unity内置事件系统提升游戏体验。通过合理安排代码执行时机,如在Awake、Start等方法中初始化组件,以及使用委托和事件处理复杂逻辑,可以使游戏更加高效且逻辑清晰。掌握这些技巧有助于开发者更好地应对游戏开发挑战。
161 0
|
4月前
|
开发者 图形学 Java
Unity物理引擎深度揭秘:从刚体碰撞到软体模拟,全面解析实现复杂物理交互的技巧与秘诀,助你打造超真实游戏体验
【8月更文挑战第31天】物理模拟在游戏开发中至关重要,可让虚拟世界更真实。Unity作为强大的跨平台游戏引擎,内置物理系统,支持从刚体碰撞到布料模拟的多种功能。通过添加Rigidbody组件,可实现物体受力和碰撞;使用AddForce()施加力;通过关节(如Fixed Joint)连接刚体以模拟复杂结构。Unity还支持软体物理,如布料和绳索模拟,进一步增强场景丰富度。掌握这些技术,可大幅提升游戏的真实感和玩家体验。
184 0