首先介绍一点关于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. Java 基础知识面试题

    equals与==有什么区别? (1)==是判断两个变量或实例是不是指向同一个内存空间 (2)equals是判断两个变量或实例所指向的内存空间的值是不是相同 Object有哪些公用方法? (1)equ ...

  2. thinkphp 数据库操作

    //所有的数据中,查出某个字段$result = $music->field('music')->select();$hotlist = M('News')->where('stat ...

  3. cookbook_模块和包

    1把模块按层次结构组织成包 只需确保每个目录中都定义了__init__.py即可. 2对所有符号的导入进行精确控制 当用户使用from module import * 语句时,我们希望对从模块或包中导 ...

  4. PHP与ECMAScript_6_常用运算符

    优先级从上到下 PHP ECMAScript 特殊运算符 [ ] ,( ) [ ] ,( ) 自增减/类型 ++ --  ! int float string array object  @ (错误抑 ...

  5. spring读取xml配置文件(二)

    一.当spring解析完配置文件名的占位符后,就开始refresh容器 @Override public void refresh() throws BeansException, IllegalSt ...

  6. Linux 下实践 VxLAN:虚拟机和 Docker 场景

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复 「1024」 即可领取,欢迎大家关注,二维码文末可以扫. 在上篇文章 ...

  7. golang-http 请求---设置header与直接发

    背景 现在各种软件到处都是,写代码难免有时候需要http 调用其他的接口. 其实这个东西还挺常用,虽然很简单,但是写的时候 又忘,就像是提笔忘字,索性总结一下吧. 不需要设置header属性的http ...

  8. AI and Robot

    Have you ever seen a movie called "Ex Machina"?  I like this movie very much. Artificial i ...

  9. Java的几种常见排序算法

    一.所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法.排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面. ...

  10. JavaScript数据结构——栈的实现与应用

    在计算机编程中,栈是一种很常见的数据结构,它遵从后进先出(LIFO——Last In First Out)原则,新添加或待删除的元素保存在栈的同一端,称作栈顶,另一端称作栈底.在栈中,新元素总是靠近栈 ...