51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2249|回复: 0
打印 上一主题 下一主题

Android java代码 和 Unity3d之间的通讯

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-6-21 16:16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
简介

  Unity3D作为一款操作简单、特效华丽、上手容易的游戏开发引擎,已经被越来越多的用在了移动开发
的各个方面。当然在大部分工程中,Unity3d可能只作为其中的一个模块,那么就涉及到了原生开发和U
nity3d开发之间的通讯问题。本文以Android开发为例,介绍两者间的交互。
正题

  通讯的实现有两种方式:1、以Unity3D工程为主,Android只做少量开发,此种情况下将Android代码打
包导入Unity3D中;2、以Android工程为主,Unity3D只做为其中的一个模块,此种情况下将Unity3D工程
导入Android中。第一种情况比较简单,我们不做介绍,我们来看第二种情况(其实包含了第一种情况用
到的知识)。
1、Unity3D脚本调用Android中的方法

  首先,我们要知道,Unity3D的脚本用的C#语言和Android用的Java语言之间的调用是使用的类似于Jni
的Native方式。我们来看一下Unity3D的脚本中应该怎么写:
    public void Onclick() {
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        jo.Call("showToast", "成功调用android方法");
}
很重要:不要去改"com.unity3d.player.UnityPlayer"和"currentActivity",这俩就是必须得这么写。
  下边这个Call方法才是真正的去调用Android原生中的方法,showToast是方法名,后边那个字符串是参
数。以下是写在UnityPlayerActivity中的方法(后边解释为什么写在这个里边):
public void showToast(String message){
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();;
}
非常简单的一句Toast输出,输出的信息就是:"成功调用android方法"。
以下是调用Java中不同类别方法的C#代码:

//无参数方法, 比如Activity的finish()方法
jo.Call(string methodName);
//带参数方法,args为参数列表
jo.Call(string methodName, params Object[] args);
//调用Android中静态方法要用以下方法
jo.CallStatic(string methodName);
jo.CallStatic(string methodName, params Object[] args);
2、Android原生代码调用Unity3D脚本中的方法

  这个就比较简单了,只有一个特定的方法来实现调用。在你导出的工程中,使用以下代码来进行调用:
UnityPlayer.UnitySendMessage(String gameObjectName, String methodName, String arg);
第一个参数:你需要调用的脚本所绑定的Unity3D对象名
第二个参数:你要调用的方法名
第三个参数:此方法所需要的参数
(注意:你要掉用的脚本必须要绑定在Unity的对象上)

3、其他

  以上的这些方法其实是关于C#和Java之间调用的知识,而我们之所以能这样用是因为Unity3d默认提
供了两者互相调用的官方插件。如果你觉得以上的调用方法是无法满足你的项目需求,而自己水平还不
错的话,Unity3d也支持用户自己写插件实现Android和Unity3d的调用。
  自定义Android插件详见:[Unity3d之Building Plugins for Android](https://docs.unity3d.com/Man


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-3 03:07 , Processed in 0.062414 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表