返回顶部
首页 > 资讯 > 移动开发 >Unity与Android交互通信
  • 581
分享到

Unity与Android交互通信

unity通信Android 2022-06-06 13:06:40 581人浏览 薄情痞子
摘要

前言 最近在研究Unity与Android通信的方法,网上也看了很多相关帖子,记录一下自己的研习所得,如有所言不到之处欢迎指正。 软件版本 1.Android Studio 3

前言

最近在研究UnityAndroid通信的方法,网上也看了很多相关帖子,记录一下自己的研习所得,如有所言不到之处欢迎指正。

软件版本

1.Android Studio 3.4.1

2.Unity 2018.4.0f1

流程

1.打开Android Studio,创建一个新项目

2.选择Empty Activity,点击Next

3.项目配置界面:

Name:项目名称

Package name:包名

Save location:项目路径(注意不要有中文)

Minimum api level:支持最低Android 版本(根据自己项目需求定)

点击Finish

 4.项目结构目录如图所示:

5.创建一个新的模块:右键app -> New -> Module(弹出Create New Module界面)

6.选择Android Library,点击Next

7.修改模块的名字:MyFirstLibrary,包名可以不用修改,点击Finish

8.完成之后出现如下新的模块:myfirstlibrary

9.双击打开app目录下的manifests文件夹下的AndroidManifest.xml文件,并把内容复制到myfirstlibrary目录下的manifests文件夹下的AndroidMainfest.xml文件中,如下图会有一些错误,先不用管。

10.右键com.shuo.myfirstlibrary -> New -> Java Class,创建新的类

11.Name:CustoMactivity(任意名字),点击OK

12.左侧目录结构会出现一个CustomActivity文件,同时右侧会自动打开此文件

13.接下来导入Unity的Class.jar包,找到Unity版本的安装路径,打开到如下文件夹(可能Unity安装的版本/位置不一样,路径会有差异)

14.这里有两个文件夹,我们打开Unity,打开Player Setting界面,如下ScriptingBackend选项:Mono/IL2CPP两个选项,设置自己需要的,这里我用默认的Mono

15.我们再回到刚才的路径下面,根据自己的设置选择正确的路径,我选择mono下的classes.jar,复制

16.回到Android Studio 项目,点击Android -> Project,切换到Project目录

17.在myfirstlibrary下面有一个libs文件夹,右键Paste,把刚刚的classes.jar复制过来,弹出一个Copy视图框,点击OK

18.在刚刚导入的classes.jar文件右键Add As Library...,在弹出的Create Library视图框选择myfirstlibrary,点击OK

19.打开CustomActivity,做如下修改:


package com.shuo.myfirstlibrary;
import android.os.Bundle;
import android.widget.Toast;
import com.unity3D.player.UnityPlayerActivity;
import com.unity3d.player.UnityPlayer;
public class CustomActivity extends UnityPlayerActivity {
    
    private final static String UNITY_GAMEOBJECT = "AndroidPlugin";
    
    private final static String UNITY_FUNCTION = "GetMessageFromAndroid";
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
    }
    
    private void ReceiveMessageFromUnity(String message){
        //一个信息提示框
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
        SendMessageToUnity("这是一个Android返回的信息内容!");
    }
    
    private void SendMessageToUnity(String message){
        UnityPlayer.UnitySendMessage(UNITY_GAMEOBJECT,UNITY_FUNCTION,message);
    }
}

20.打开myfirstlibrary目录下的manifests文件夹下的AndroidMainfest.xml文件,做如下修改:

21.选择myfirstlibrary文件夹,菜单栏Build -> Make Module 'myfirstlibrary',等待build完成

22.按照如下目录,找到myfirstlibrary-debug.aar文件,右键Show in Explorer

23.打开文件夹,找到myfirstlibrary-debug.aar文件,修改后缀名为myfirstlibrary-debug.rar,并解压缩出来

24.打开myfirstlibrary-debug文件夹,里面的目录结构如下,我们只需要classes.jar和AndroidManifest.xml文件

25.打开Unity,创建Plugins文件夹,并创建Android子文件夹,在Android文件夹里面创建libs文件夹,并分别把AndroidManifest.xml文件拖入Android,把classes.jar拖入libs文件夹

26.在Unity中创建如下:

AndroidPlugin:空Game Object就行,用来接收从Android返回过来的消息,名字必须与AndroidStudio项目中的名字一致。

Button_SendMessage:点击发送消息到Android的按钮。

Text_ReceiveMessage:接收Android返回过来的消息并显示。

27.新建脚本Game Manager,并挂到AndroidPlugin上面,代码如下


using UnityEngine;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
    public Text Text_ShowMessage;
    /// 
    /// 外部按钮调用
    /// 
    public void SendMessageToAndroid()
    {
        AndroidJavaClass javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject javaObject = javaClass.GetStatic("currentActivity");
        //此处"ReceiveMessageFromUnity"必须与AndroidStudio项目中的方法名字一致
        javaObject.Call("ReceiveMessageFromUnity", "这是一个从Unity发送的消息内容!");
    }
    /// 
    /// 接收Android返回的消息方法,必须与AndroidStudio项目中的名字一致
    /// 
    /// 
    public void GetMessageFromAndroid(string message)
    {
        Text_ShowMessage.text = message;
    }
}

28.Button_SendMessage按钮添加点击事件(GameManager.SendMessageToAndroid),把Text_ReceiveMessage拖入GameManager中,如下图

29.打包apk,包名/项目名自己按规定设置,最后进行真机测试,如下发送和接收消息都正常

项目链接

https://GitHub.com/YangGuangShuo/MyFirstUnity2Android

结语

此篇文章只是个人见解,如有任何问题,可在下方留言。


作者:朔__朔


--结束END--

本文标题: Unity与Android交互通信

本文链接: https://lsjlt.com/news/29031.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作