news 2026/4/30 18:29:22

Android 与 Unity 交互通信详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android 与 Unity 交互通信详解

在移动开发中,将 Unity 作为游戏引擎嵌入 Android 原生 App,或者从 Unity 项目导出 Android 工程后需要调用原生功能(如获取设备信息、支付、推送等),两者之间的双向通信是核心需求。下面详细介绍通信原理、实现方式及注意事项。

一、通信基础原理

- **Unity 侧**:运行在 C# 虚拟机(Mono 或 IL2CPP)中,通过 `AndroidJavaClass` 和 `AndroidJavaObject` 通过 JNI 调用 Android Java 代码。
- **Android 侧**:原生 Java/Kotlin 代码通过 `UnityPlayer.UnitySendMessage` 方法向 Unity 中指定游戏对象上的 C# 方法发送消息。

本质上都是通过 JNI(Java Native Interface)桥接,Unity 封装了底层细节,使调用较为简洁。

二、Unity → Android 通信

1. 基础方式:使用 `AndroidJavaClass` 和 `AndroidJavaObject`

Unity C# 代码可以动态调用任意 Android Java 类。

```csharp
using UnityEngine;

public class UnityToAndroid : MonoBehaviour
{
    void Start()
    {
        // 调用静态方法:UnityPlayer 类中的静态方法
        AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");

        // 调用实例方法:Toast 显示消息
        AndroidJavaClass toastClass = new AndroidJavaClass("android.widget.Toast");
        toastClass.CallStatic<AndroidJavaObject>("makeText", currentActivity, "Hello from Unity", 0)
                   .Call("show");
    }
}
```

2. 调用自定义 Android 方法

在 Android 工程中编写一个原生插件类:

```java
// 文件:MyNativePlugin.java
package com.example.myapp;

import android.app.Activity;
import android.widget.Toast;
import com.unity3d.player.UnityPlayer;

public class MyNativePlugin {
    private static Activity activity = UnityPlayer.currentActivity;

    public static void showToast(final String message) {
        activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 23:40:32

三菱FX3U与欧姆龙E5CC温控器通讯实战:远程+本地控制全解析

三菱FX3U 485ADP与4台欧姆龙E5cc温控器远程本地通讯程序 功能&#xff1a;通过三菱fx3u 485ADP-MB板对4台欧姆龙E5cc温控器进行modbus通讯&#xff0c;可以实现温度在触摸屏上设置&#xff0c;也可以在温控器本机上设定&#xff0c;实现远程和现场双向设定控制&#xff0c;方便…

作者头像 李华
网站建设 2026/4/10 23:38:24

从云端到本地:ChromaDB集成BGE模型的两种高效Embedding方案

1. 为什么需要BGE模型与ChromaDB的集成 在构建智能问答系统或语义搜索引擎时&#xff0c;文本向量化&#xff08;Embedding&#xff09;是最核心的技术环节之一。简单来说&#xff0c;就是把文字转换成计算机能理解的数字向量。这就像给每个词语或句子分配一个独特的"身份…

作者头像 李华
网站建设 2026/4/10 23:37:42

Python数据可视化指南

Python数据可视化指南 后端转 Rust 的萌新&#xff0c;ID "第一程序员"——名字大&#xff0c;人很菜&#xff08;暂时&#xff09;。正在跟所有权和生命周期死磕&#xff0c;日常记录 Rust 学习路上的踩坑经验和"啊哈时刻"&#xff0c;代码片段保证能跑。…

作者头像 李华