想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用。真不好使,一导入执行就报错。调好错了再执行发现点button没反应。重复试了几遍发现还是没反应,没办法看源代码。结果发现仅仅实现了IOS部分,没有Android部分,我屮艸芔茻...。神伤!用IOS真机測试吧,还是有问题,果断放弃了,下定决心自己动手丰衣足食,尽管不了解Android,但没有学不起来的,仅仅要想。就没有实现不了的!

。!首先还是得学习一下Android和Unity的简单交互,在这儿写个具体点的教程!

供刚開始学习的人学习,当然网上也有这方面的教程,有的地方不注意的话。还是会碰到困扰的,以下是具体步骤。很多其它教程敬请关注我的微博

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

关于最主要的交互,能够參考这篇文章,Unity与Android基本交互。然后在这基础之上来做实现手机震动,事实上也差点儿相同!可能反复了,当自我巩固吧,呵呵!

測试方法:必需要真机測试!

。!

实现步骤:

一、创建Androidproject

1.创建project



2.导入Unity相关jar

Jar文件夹:unity的安装路径\Editor\Data\PlaybackEngines\androidplayer\bin下的classes.jar



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

package com.example.clickshake;

import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
import android.app.Service;
import android.os.Vibrator; //震动的包 public class MainActivity extends UnityPlayerActivity { private Vibrator mVibrator01;//声明一个振动器对象 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
} //震动函数
public void ClickShake()
{
mVibrator01 = (Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);
mVibrator01.vibrate(new long[]{100,10,100,1000},-1);//自己定义整栋模式。仅仅震动一次
} //推断大小
public int Max(int a,int b)
{
if(a>b)
return a;
return b;
} }

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

4.改动XML而且加入震动权限

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


5.导出jar包

在项目根文件夹上右击->Export




点击Finish结束!

二、创建Unityproject

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

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


2.写Unity调用Android代码

using UnityEngine;
using System.Collections; public class NewBehaviourScript : MonoBehaviour { private AndroidJavaObject activity;
private int res = 0;
// Use this for initialization
void Start () {
AndroidJavaClass jc=new AndroidJavaClass("com.unity3d.player.UnityPlayer");
activity = jc.GetStatic<AndroidJavaObject>("currentActivity");
res = activity.Call<int>("Max", new object[] { 10, 20 });
} void OnGUI()
{
GUI.Label(new Rect(20, 20, 300, 20), "调用的Android方法:求出10和20中比較大的数字是"+res.ToString());
GUI.Label(new Rect(20, 70, 300, 20), "http://blog.csdn.net/dingxiaowei2013");
if ( GUI.Button(new Rect(Screen.width / 2 - 20, Screen.height / 2 + 20, 100, 40), "点击震动"))
{
activity.Call("ClickShake");
} }
}

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

(注:初步了解这里的參数之所以填”com.unity3d.player.UnityPlayer”和”currentActivity”,是由于在生成jar文件的时候,已经指定了MainActivityclass继承UnityPlayerActivity,也在XML指定了MainActivity是Main class)
activity.Call<int>("","");这个调用的是有返回值的方法,int是返回类型,activity.Call("");调用的是没返回值没參数的方法

3.导出设置(Importent)



4.真机測试

我就不上传截图了,大概就是一个button,可以点击使手机震动。另一个label。显示10和20比較的结果值。

很多其它教程欢迎关注 微博

[Unity3D]Unity+Android交互教程——让手机&quot;动&quot;起来的更多相关文章

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

    想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用,真不好使,一导入运行就报错,调好错了再运行发现点按钮没反应,反复试了几遍发现还是 ...

  2. Unity Android交互过坑指南

    Unity Android交互过坑指南 介于网上看过很多unity和Android交互的教程,都或多或少的漏掉了一些部分,导致编译过程中出现各种问题,特此整理一份教程,仅供参考 介绍 本次实现的是在游 ...

  3. Unity3d与Android交互

    先看下效果 你一定会说,然并卵! 没错,这里只是一个最简单的例子,unity与android activity 互相传参数. 玩过手游的都知道,在你要为你心爱的游戏角色准备花钱买钻石,点击购买的时候, ...

  4. Unity3D 与android交互流程步骤

    1.Android端代码可以在Eclipse中开发(AndroidStudio没有试,应该也可以) 2.Unity3D端代码要在Unity中开发 3.Android和Unity3D端,两边都需要加入一 ...

  5. Unity3D For Android 开发教程

    原地址:http://game.ceeger.com/Unity/Doc/2011/Unity3D_For_Android.html 我自认为抵挡诱惑的能力还是很强大的,关键的时候还能把持住自己.今天 ...

  6. Android初级教程获取手机系统联系人信息

    在手机内部,对联系人信息存在对应的数据库.我们创建的而联系人信息都存在这张表中.如下是对数据库的截图,我已经对表和应该注意的地方做了红笔标注: 好了,现在可以根据数据库里面的数据来写代码了. 代码如下 ...

  7. Android初级教程获取手机位置信息GPS与动态获取最佳方式

    简单介绍一下gps定位的操作. 主要是靠locationmanger这个api完成的一些操作:通过获取这个实例,然后调用它的requestLocationUpdates方法进行注册.传入的参数分别有以 ...

  8. Android初级教程调用手机拍照与摄像功能

    这个小案例建议在手机上运行. package com.example.camera; import java.io.File; import android.net.Uri; import andro ...

  9. Android 游戏教程让人物动起来

    在这里给大家分享Android游戏教程怎样让人物动起来,话不多说了,直接进入正题. 一. 准备工作     首先要准备好要使用的人物动作图和地形图.把它分割成16个不同的动作,循环播放同一行的4个不同 ...

随机推荐

  1. iptables学习与研究(使用LOG记录失败日志)

    原文地址: http://blog.csdn.net/fafa211/article/details/2307581 通常情况下,iptables的默认政策为DROP,不匹配的数据包将被直接丢弃.但在 ...

  2. Ruby:字符集和编码学习总结

    背景 Ruby直到1.9版本才很好的支持了多字节编码,本文简单总结了今天学习的关于Ruby编码方面的知识. 字符串可以使用不同的编码 在.NET中字符串的编码是一致的,Ruby允许字符串有不同的编码, ...

  3. 使用Struts2服务端与android交互

    转自:http://www.cnblogs.com/android-html5/archive/2011/09/25/2534107.html android--使用Struts2服务端与androi ...

  4. linux查找超过一定时间的文件,并批量删除

    1.find . -maxdepth 4  -name "*-*" -mtime 3 -maxdepth的值决定是否对下面的子目录进行递归查找 -mtime 3表示查找刚好3天的: ...

  5. [转]awk使用手册

    awk 手册 简体中文版由bones7456 (bones7456@gmail.com)整理. 原文:应该是 http://phi.sinica.edu.tw/aspac/reports/94/940 ...

  6. @Redis Desktop Manager无法连接虚拟机中启动的redis服务问题解决

    Redis Desktop Manager下载地址 https://redisdesktop.com/download 安装好以后连接linux服务器上的Redis服务器错误: 问题排查: 1.检查R ...

  7. 8个使用JavaScript展示图片解决方案

    1. JonDesign’s SmoothGallery 2.0 SmoothGallery demo 2. (E)2 Photo Gallery (E)2 Photo Gallery demo 3. ...

  8. 13个 ASP.NET MVC 的扩展

    ASP.NET MVC设计的主要原则之一是可扩展性.处理管线(processing pipeline)上的所有(或大多数)东西都是可替换的.因此,如果您不喜欢ASP.NET MVC所使用的约定(或缺乏 ...

  9. Sqlite-SQLiteHelper类,操作SQLite数据库

    using System; using System.Data; using System.Text.RegularExpressions; using System.Xml; using Syste ...

  10. Sqlserver DateTime转换成SMALLDATETIME时“产生一个超出范围的值”

    工作中遇到一个问题,A表中字段(DateTime1)的数据类型为DateTime,新建了一张表B的SMALLDATETIME1字段的数据来自A表的DateTime1 但在将A表字段DateTime1导 ...