文档章节

[Unity3D]Unity+Android交互教程——让手机"动"起来

丁小未
 丁小未
发布于 2014/04/26 01:07
字数 1010
阅读 3.4W
收藏 9

「深度学习福利」大神带你进阶工程师,立即查看>>>

想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用,真不好使,一导入运行就报错,调好错了再运行发现点按钮没反应,反复试了几遍发现还是没反应,没办法看源码,结果发现只实现了IOS部分,没有Android部分,我屮艸芔茻...,神伤!用IOS真机测试吧,还是有问题,果断放弃了,下定决心自己动手丰衣足食,虽然不了解Android,但没有学不起来的,只要想,就没有实现不了的!!!首先还是得学习一下Android和Unity的简单交互,在这儿写个详细点的教程!供初学者学习,当然网上也有这方面的教程,有的地方不注意的话,还是会碰到困扰的,下面是详细步骤!更多教程敬请关注我的微博

效果这里展示的Unity调用Android原生的方法实现点击Unity界面中的按钮,然后实现手机的震动!

关于最基本的交互,可以参考这篇文章,Unity与Android基本交互,然后在这基础之上来做实现手机震动,其实也差不多!可能重复了,当自我巩固吧,呵呵!

测试方法:必须要真机测试!!!

实现步骤:

一、创建Android工程

1.创建工程

 

2.导入Unity相关jar

Jar目录:unity的安装路径\Editor\Data\PlaybackEngines\androidplayer\bin下的classes.jar

 

 

3.打开MainActivity.java,导入各种包,编写自己的函数

[java] view plaincopyprint?

 

  1. package com.example.clickshake;  

  2.   

  3. import android.os.Bundle;  

  4. import com.unity3d.player.UnityPlayerActivity;  

  5. import android.app.Service;  

  6. import android.os.Vibrator;  //震动的包  

  7.   

  8. public class MainActivity extends UnityPlayerActivity {  

  9.   

  10.     private Vibrator mVibrator01;//声明一个振动器对象  

  11.       

  12.     @Override  

  13.     protected void onCreate(Bundle savedInstanceState) {  

  14.         super.onCreate(savedInstanceState);  

  15.     }  

  16.       

  17.     //震动函数  

  18.     public void ClickShake()  

  19.     {  

  20.         mVibrator01 = (Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);   

  21.         mVibrator01.vibrate(new long[]{100,10,100,1000},-1);//自定义整栋模式,只震动一次  

  22.     }  

  23.       

  24.       

  25.     //判断大小  

  26.     public int Max(int a,int b)  

  27.     {  

  28.         if(a>b)  

  29.             return a;  

  30.         return b;  

  31.     }  

  32.   

  33. }  


添加unityActivity,使MainActivity继承UnityPlayerActivity,并把SetContentView函数删掉(不然到手机上启动程序的时候就会只看到一句HelloWorld),这里有两个自己自定义的函数主要的就是上面的没有参数的调用振动器的自定义函数,还有个就是有返回值有参数的比较大小的函数,这里用两个不同的函数在Unity中调用做对比!

4.修改XML并且添加震动权限

添加允许震动的权限,选择AndroidManifest.xml,然后点击Permissions->Add UserPermission->android.perssion.VIBRATE。

5.导出jar包

在项目根目录上右击->Export

 

 

点击Finish结束!

二、创建Unity工程

1.在Assets下创建Plugins/Android文件夹,这个文件夹是特殊文件夹,专门用与存放Android的包文件,以便调用Android接口

将文件的xml,jar,res,libs文件放在Android文件下

 

2.写Unity调用Android代码

[csharp] view plaincopyprint?

 

  1. using UnityEngine;  

  2. using System.Collections;  

  3.   

  4. public class NewBehaviourScript : MonoBehaviour {  

  5.   

  6.   

  7.     private AndroidJavaObject activity;  

  8.     private int res = 0;  

  9.     // Use this for initialization  

  10.     void Start () {  

  11.         AndroidJavaClass jc=new AndroidJavaClass("com.unity3d.player.UnityPlayer");  

  12.         activity = jc.GetStatic<AndroidJavaObject>("currentActivity");  

  13.         res = activity.Call<int>("Max"new object[] { 10, 20 });  

  14.     }  

  15.   

  16.     void OnGUI()  

  17.     {  

  18.         GUI.Label(new Rect(20, 20, 300, 20), "调用的Android方法:求出10和20中比较大的数字是"+res.ToString());  

  19.         GUI.Label(new Rect(20, 70, 300, 20), "http://blog.csdn.net/dingxiaowei2013");  

  20.         if ( GUI.Button(new Rect(Screen.width / 2 - 20, Screen.height / 2 + 20, 100, 40), "点击震动"))  

  21.         {  

  22.             activity.Call("ClickShake");  

  23.         }  

  24.           

  25.     }  

  26. }  


说明AndroidJavaObject是一个java对象,这里获取的是java视图,然后调用自定义方法。

(注:初步了解这里的参数之所以填”com.unity3d.player.UnityPlayer”和”currentActivity”,是因为在生成jar文件的时候,已经指定了MainActivityclass继承UnityPlayerActivity,也在XML指定了MainActivity是Main class)

activity.Call<int>("","");这个调用的是有返回值的方法,int是返回类型,activity.Call("");调用的是没返回值没参数的方法

 

3.导出设置(Importent)

 

4.真机测试

我就不上传截图了,大概就是一个按钮,能够点击使手机震动,还有一个label,显示10和20比较的结果值。

 

更多教程欢迎关注 微博


丁小未
粉丝 8
博文 17
码字总数 24438
作品 0
南通
私信 提问
加载中
请先登录后再评论。
树莓派(Raspberry Pi):完美的家用服务器

自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( RPi )最明显却又是最不吸引人的用处是:创建你的完美家用...

异次元
2013/11/09
6.8K
8
Javascript图元绘制库--ternlight

基于HTML CANVAS API的Javascript库,提供在HTML页面上绘制图元——如流程图的能力。 目前已支持简单的矩形图元和图元间的连线(直线、直角连线两种),拖拽图元等能力。 该javascript librar...

fancimage1
2013/02/07
6.3K
1
实时分析系统--istatd

istatd是IMVU公司工程师开发的一款优秀的实时分析系统,能够有效地收集,存储和搜索各种分析指标,类似cacti,Graphite,Zabbix等系统。实际上,istatd修改了Graphite的存储后端,重新实现了...

匿名
2013/02/07
3K
1
JavaScript 服务器页--JSSP

JSSP (JavaScript Server Pages) 可以让你在 Java 的应用服务器上使用 JavaScript 生成网页。支持已有的 Java 包和嵌入式 SQL 命令。包含 Dervish 这个 JavaScript 交互操作包用于简化 Ajax...

匿名
2013/02/11
3.8K
0
跨平台手机应用开发--Gideros

Gideros 可以让你轻松快速创建 iOS 和 Android 应用,提供用户友好的集成开发环境,内建模拟器对应用进行不同屏幕大小、分辨率下的测试,最大的优点是可即时修改代码即时进行测试,无需编译安...

匿名
2013/02/19
2.8K
1

没有更多内容

加载失败,请刷新页面

加载更多

一道多线程面试题区分平庸与卓越

展开 本文分享自微信公众号 - Java架构师联盟(msbxq2019)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

Java架构师联盟
04/22
0
0
推荐 33 个 IDEA 最牛配置,写代码太爽了

来源:http://u6.gg/sS7XJ 1.设置maven 1.在File->settings->搜索maven 2.Mavan home directory--设置maven安装包的bin文件夹所在的位置 3.User settings file--设置setting文件所在的位置 ......

程序员闪充宝
04/08
0
0
各位端午节快乐[玫瑰]

本文分享自微信公众号 - 漫游前端世界(gh_6ac344b74a01)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

Chorer
06/25
9
0
6个超酷的网站,专门用于学习算法

https://mp.weixin.qq.com/s?__biz=MzIwNTc4NTEwOQ==&mid=2247488953&idx=2&sn=9b45800a84113d9a573539de043dcf9c&chksm=972ac4c3a05d4dd524522990e631768d7eb73a483bf62fb3496711953e625832......

osc_wfvuuuju
23分钟前
11
0
网络安全-跨站请求伪造(CSRF)的原理及防御

目录 简介 原理 举例 漏洞发现 链接及请求伪造 CSRF攻击 不同浏览器 未登录状态 登录状态 代码查看 防御 用户 供应商(程序员) 简介 跨站请求伪造(Cross-site request forgery),也被称为...

osc_bs9rqgec
24分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部