Unity之SDK接入(Unity与Android通信)
首先介绍一点关于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通信)的更多相关文章
- SDK接入(2)之Android Google Play内支付(in-app Billing)接入
SDK接入(2)之Android Google Play内支付(in-app Billing)接入 继上篇SDK接入(1)之Android Facebook SDK接入整理完Facebook接入流程之 ...
- SDK接入(1)之Android Facebook SDK接入
SDK接入(1)之Android Facebook SDK接入 由于游戏已上线,且处于维护阶段,所以有空写写各种SDK接入过程和遇到的问题,也当作一种工作总结.SDK接入主流分为这么几类,登录.支付. ...
- Unity之SDK接入(OPPO)
简介:首先介绍一下,为什么博主要选择OPPO的SDK接入呢,因为OPPO的SDK接入是目前博主发现最简单的SDK.所以,博主选择OPPO,带领大家接SDK从入门到精通 工作准备: 1.环境配置(SDK ...
- 社交化分享SDK for Unity
前言 社交化分享,即分享到社交网络. 本文主要记录的是在Unity集成社交化分享SDK,现主流的分享SDK有如下: 1.友盟社交化分享 for unity 2.ShareSDK分享 for unity ...
- 【Unity游戏开发】SDK接入与集成——小白入门篇
一.简介 通常一款游戏开发到后期,一般都会涉及到第三方SDK的接入与集成,对于不熟悉SDK接入的同学来说,接SDK每次都是云里雾里,而熟悉SDK接入的同学又觉得不断地重复做接入SDK工作这样没有成就感 ...
- Gvr SDK for Unity 分析(二)
前言 关于google vr sdk的具体使用,传送门 Gvr SDK for Unity 分析(一) Google Daydream平台已经整合进Google VR SDK 本文环境:Unity5. ...
- Channel SDK (渠道SDK) for Unity
渠道 英文channel,解释:商品的销售路线,也就是我们开发商(CP)都把游戏开发好了,交付给渠道帮我们运营,帮我们推广,帮我们赚钱. Android和IOS渠道 拿安卓和IOS两大平台来说,它们都 ...
- Gvr SDK for Unity 分析(一)
Gvr SDK概述 通过谷歌VR SDK for unity 为Android和iOS 构建虚拟现实应用程序 unity SDK在Android上支持构建应用程序for daydream 和 card ...
- EasyAR SDK在unity中的简单配置及构建一个简单场景。
首先打开EasyAR的官方网站http://www.easyar.cn/index.html,注册登陆之后,打开首页的开发页面. 下载sdk和Unity Samples. 创建一个unity3d工程N ...
随机推荐
- 代码中批量执行Oracle SQL语句
今天在写一个工具(winform),作用是批量的INSERT OR UPDATE ORACLE数据库中的一个表. 执行的时候老是报错“[911] ORA-00911: invalid charact ...
- python购物车升级版
各文件内容 前言 功能架构等请参考前一篇博客,此篇博客为进阶版的存代码展示. 详细文件内容 启动文件 starts.py启动文件 import os import sys BASE_DIR = os. ...
- nginx CRLF(换行回车)注入漏洞复现
nginx CRLF(换行回车)注入漏洞复现 一.漏洞描述 CRLF是”回车+换行”(\r\n)的简称,其十六进制编码分别为0x0d和0x0a.在HTTP协议中,HTTP header与HTTP Bo ...
- TP框架基础 (二) ---空控制器和空操作
通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控 ...
- golang "[]uint8" to string
关于Uinit8和Byte: The Go Programming Language Specification Numeric types uint8 the set of all unsigned ...
- css常用语法续集
1 设置字体 body{font-familly:“宋体”} 2 可以使用下面代码设置网页中文字的字号为12像素,并把字体颜色设置为#666(灰色): body{font-size:12px;c ...
- Servlet高级应用
会话只是指一段指定的时间间隔. 会话跟踪是维护用户状态(数据)的一种方式.它也被称为servlet中的会话管理. Http协议是一个无状态的,所以我们需要使用会话跟踪技术来维护用户状态. 每次用户请求 ...
- Vue 报错 listen EADDRINUSE :::8080
今天在重启vue项目的时候,发现报了错, listen EADDRINUSE :::8080错误提示 原因:因为另一个项目占用了8080端口,我直接在命令行npm run dev第二个项目,就给出了这 ...
- 【Android】error: Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light.NoActionBar'.
问题: res 文件夹下的 values 下的 styles.xml <style name="Sherlock.Light.NoActionBar" parent=&quo ...
- Day01:JAVA开发环境
下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html,点 ...