首先介绍一点关于Android与unity通信的知识:

完成通信主要靠unity中的class.jar包(在unity的安装目录下)。

在unity中调用android的方法:

jo.call("方法名"[,参数名])             其中[]代表可有可无。

在endroid中调用unityu的方法:

导入class.jar包,继承UnityPlayerActivity,使用UnityPlayer.UnitySendMessage("游戏对象名","unity中的方法名","参数")

现在,我们已经有基础了,可以动手操作了

1.eclipse中新建Android工程,导入Unity安装目录下的class.jar类,添加MainActivity.java代码:

package com.example.test;

import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity; import android.os.Bundle; public class MainActivity extends UnityPlayerActivity { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void Send() {
UnityPlayer.UnitySendMessage("aaa", "AndroidCallBack", "okokoko");
}
}

MainActivity

从eclipse中导出jar包

2.Unity中,新建工程,

编写EclipseCall.cs代码如下:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System; public class EclipseCall : MonoBehaviour
{
private AndroidJavaClass jc;
private AndroidJavaObject jo;
private Text text;
private Button btn; //单例模式
private static EclipseCall _instance;
public static EclipseCall Instance
{
get
{
if (_instance == null)
{
_instance = new EclipseCall();
}
return _instance;
}
} void Start()
{
text = GameObject.Find("aaa").GetComponent<Text>();
btn = GameObject.Find("Button").GetComponent<Button>();
this.name = "aaa"; _instance = this;
jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
} public void ClickBtn()
{
jo.Call("Send");
} public void AndroidCallBack(String str)
{
text.text = str;
}
}

EclipseCall

将eclipse中导出的jar包拖进libs文件中

打包:

下面给大家捋一下思路:

从下图中可以看出,在Unity中通过按钮点击事件调用eclipse中的Send方法,eclipse中Send方法又调用了unity的AndroidCallBack方法,通过eclipse传递参数到unity中,实现将参数显示在Text游戏对象身上。

运行,点击后的UI:

最后,给大家总结几点注意事项:

1.记得点击eclipse菜单栏的Project——>Properties——>Java Build Path_》Add External JARs...——>选择Unity安装目录下的class.jar——>Apply——>Apply and Cliose

2.**Activity.java必须继承Unity,且要实现Android与Unity的通信,必须保证一个Android项目只有一个**Activity.java类

3.unity与anddroid通信,必须从unity端打包,即上述方式。

4.调用Unity的函数时记得参数的选择,注意函数名,游戏对象。

5.脚本的绑定:unity中注意上面第4的游戏对象,必须绑定有调用的函数名的脚本。

6.unity打包的包名必须和eclipse中的对应,打包时记得添加场景。

7.如果在实际开发中(接SDK),打包是还必须注意填写keystore,密码。具体方法参考http://www.cnblogs.com/shirln/p/8384438.html

Unity之SDK接入(Unity与Android通信)的更多相关文章

  1. SDK接入(2)之Android Google Play内支付(in-app Billing)接入

    SDK接入(2)之Android Google Play内支付(in-app Billing)接入 继上篇SDK接入(1)之Android Facebook SDK接入整理完Facebook接入流程之 ...

  2. SDK接入(1)之Android Facebook SDK接入

    SDK接入(1)之Android Facebook SDK接入 由于游戏已上线,且处于维护阶段,所以有空写写各种SDK接入过程和遇到的问题,也当作一种工作总结.SDK接入主流分为这么几类,登录.支付. ...

  3. Unity之SDK接入(OPPO)

    简介:首先介绍一下,为什么博主要选择OPPO的SDK接入呢,因为OPPO的SDK接入是目前博主发现最简单的SDK.所以,博主选择OPPO,带领大家接SDK从入门到精通 工作准备: 1.环境配置(SDK ...

  4. 社交化分享SDK for Unity

    前言 社交化分享,即分享到社交网络. 本文主要记录的是在Unity集成社交化分享SDK,现主流的分享SDK有如下: 1.友盟社交化分享 for unity 2.ShareSDK分享 for unity ...

  5. 【Unity游戏开发】SDK接入与集成——小白入门篇

    一.简介 通常一款游戏开发到后期,一般都会涉及到第三方SDK的接入与集成,对于不熟悉SDK接入的同学来说,接SDK每次都是云里雾里,而熟悉SDK接入的同学又觉得不断地重复做接入SDK工作这样没有成就感 ...

  6. Gvr SDK for Unity 分析(二)

    前言 关于google vr sdk的具体使用,传送门 Gvr SDK for Unity 分析(一) Google Daydream平台已经整合进Google VR SDK 本文环境:Unity5. ...

  7. Channel SDK (渠道SDK) for Unity

    渠道 英文channel,解释:商品的销售路线,也就是我们开发商(CP)都把游戏开发好了,交付给渠道帮我们运营,帮我们推广,帮我们赚钱. Android和IOS渠道 拿安卓和IOS两大平台来说,它们都 ...

  8. Gvr SDK for Unity 分析(一)

    Gvr SDK概述 通过谷歌VR SDK for unity 为Android和iOS 构建虚拟现实应用程序 unity SDK在Android上支持构建应用程序for daydream 和 card ...

  9. EasyAR SDK在unity中的简单配置及构建一个简单场景。

    首先打开EasyAR的官方网站http://www.easyar.cn/index.html,注册登陆之后,打开首页的开发页面. 下载sdk和Unity Samples. 创建一个unity3d工程N ...

随机推荐

  1. MySql(Linux)

    百度云:链接:http://pan.baidu.com/s/1jHQtPau    密码:elr8 官方下载网址:http://dev.mysql.com/downloads/mysql/

  2. storm入门demo

    一.storm入门demo的介绍 storm的入门helloworld有2种方式,一种是本地的,另一种是远程. 本地实现: 本地写好demo之后,不用搭建storm集群,下载storm的相关jar包即 ...

  3. jsp数据交互(二).1

    对象的作用域:   JSP中提供了四种作用域,分别是page作用域,request作用域,session作用域和application作用域. page作用域: page作用域指单一JSP页面的范围, ...

  4. 仿LookUpEdit多列模糊搜索,功能比GridLookUpEdit强大,比SearhLookUpEdit方便

    先上效果图: 控件调用示例:(devexpress使用了16.2.6.0版本,可以根据实际需要进行版本转换) using System; using System.Collections.Generi ...

  5. 【Android】No resource found that matches the given name 'Theme.Sherlock.Light.NoActionBar'

    被这个问题困扰了好久…… 错误如下: error: Error retrieving parent for item: No resource found that matches the given ...

  6. python的enumerate lambda isinstance filter函数

    0x01:filter(function,iterable) filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 接收两个参数,第一个为函数,第二个为序列(可迭 ...

  7. 用python实现九九乘法表输出-两种方法

    2019-08-05 思考过程:九九乘法表需要两层循环,暂且称之为内循环和外循环,因此需要写双层循环来实现. 循环有for和while两种方式. for循环的实现 for i in range(1,1 ...

  8. (通俗易懂小白入门)网络流最大流——EK算法

    网络流 网络流是模仿水流解决生活中类似问题的一种方法策略,来看这么一个问题,有一个自来水厂S,它要向目标T提供水量,从S出发有不确定数量和方向的水管,它可能直接到达T或者经过更多的节点的中转,目前确定 ...

  9. 前端笔记之微信小程序(二){{}}插值和MVVM模式&数据双向绑定&指令&API

    一.双花括号{{}}插值和MVVM模式 1.1 体会{{}}插值 index.wxml的标签不是html的那些标签,这里的view就是div. {{}}这样的插值写法,叫做mustache语法.mus ...

  10. Spark 系列(三)—— 弹性式数据集RDDs

    一.RDD简介 RDD 全称为 Resilient Distributed Datasets,是 Spark 最基本的数据抽象,它是只读的.分区记录的集合,支持并行操作,可以由外部数据集或其他 RDD ...