文档章节

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

丁小未
 丁小未
发布于 2014/04/26 01:07
字数 1010
阅读 16577
收藏 7
点赞 0
评论 0

想要用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比较的结果值。

 

更多教程欢迎关注 微博


© 著作权归作者所有

共有 人打赏支持
丁小未
粉丝 7
博文 17
码字总数 24438
作品 0
南通
Ubuntu 决定放弃 Unity——不好的噩耗

Ubuntu 的创始人 Mark Shuttleworth 分享了更多关于 Ubuntu 为什么选择放弃 Unity 的细节。 上周发布的 Ubuntu 17.10 是自2011年推出以来,首次没有使用 Unity 桌面的 Ubuntu。 创始人 Mark...

linuxprobe16
2017/11/02
0
0
【Unity3D技术文档翻译】第2.6篇 编写着色器 (材质、着色器与纹理系列完结)

上一章:【Unity3D技术文档翻译】第2.5篇 通过脚本访问和修改材质参数 本章原文所在章节:【Unity Manual】→【Graphics】→【Graphics Overview】→【Materials, Shaders & Textures】→【S...

何三思
06/29
0
0
Unite Beijing 2015大型活动

记得,上次在北京参加大型活动还是2008年前–传统电信行业的巅峰时期;那时移动互联网、Android、IOS还是萌芽状态。 七年过去了,IT行业翻天覆地的巨大变化,传统电信行业在慢慢的陨落,与此...

润物互动技术团队博客
2015/04/22
0
1
【Unity3D技术文档翻译】第3.1篇 光照概述

上一章:【Unity3D技术文档翻译】第3.0篇 光照总览 & 灯光 本章原文所在章节:【Unity Manual】→【Graphics】→【Graphics Overview】→【Lighting】→【Lighting overview】 光照概述 为了...

何三思
07/01
0
0
HoloLens开发——C++ DLL封装及在win32、Unity、AR眼镜中调用情况

一、C++ Dll基础了解 动态链接库(dll)比较好的介绍在孙鑫《VC++深入详解》第十九章动态链接库中有详细介绍。主要涉及以下问题: 1.静态链接库与动态链接库的区别 https://blog.csdn.net/za...

haitianyunlan
05/09
0
0
使用Cocos Creator 开发微信小游戏(一)—— 项目配置与环境搭建

项目配置与环境搭建 第一次打开Cocos Creator界面,就感觉,这很Unity啊,虽然有不少地方还没有完善,但是对于开发小游戏这样轻量级的游戏是够用的了,所以用过Unity的同学上手会特别快。这个...

yao_jianlun
05/06
0
0
#创新实训#VR漫游项目汇报4

1.有关游戏优化技术的详细整理 带宽优化 减少纹理大小 其中和优化相关的主要有“Generate Mip Maps”、“Max Size”和“Format”几个选项。 “Generate Mip Maps”会为同一张纹理创建出很多不...

christina_5
04/15
0
0
【Unity】多线程和主线程交互使用类——Loom工具分享(转载)

作者:D.S.Qiu 原文:Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享 熟悉Unity的developer都知道在Unity中的线程不能使用Unity的对象,但可以使用Unity的值类型变...

何三思
04/12
0
0
我的Linux发行版/桌面环境选择之路

3月份 Unity 这个时间用的是Ubuntu 12.10,默认的Unity界面,稳定性一般,最不习惯的是,窗口操作按钮(最小化最大化关闭)在左上角,用惯了Windows的我很不习惯。然后就是,Unity的菜单很炫...

Lucups
2013/11/22
0
15
C#游戏开发快速入门教程Unity5.5教程

C#游戏开发快速入门教程Unity5.5教程 试读文档下载地址:http://pan.baidu.com/s/1slwBHoD C#是微软发布的高级程序设计语言,这门语言和C语言一样,已经成为了大学计算机相关专业必学的一门语...

大学霸
2014/09/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
0
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
12
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
1
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
1
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
0
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
2
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部