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

简介: 想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用,真不好使,一导入运行就报错,调好错了再运行发现点按钮没反应,反复试了几遍发现还是没反应,没办法看源码,结果发现只实现了IOS部分,没有Android部分,我屮艸芔茻.

想要用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,导入各种包,编写自己的函数

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结束!

二、创建Unity工程

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.真机测试

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

更多教程欢迎关注 微博

相关文章
|
2月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
|
3月前
Android4.1.0实战教程---自动阅读小说
Android4.1.0实战教程---自动阅读小说
37 0
|
3月前
|
JSON 前端开发 数据安全/隐私保护
【教程】iOS 手机抓包工具介绍及教程
📱 最近又发现APP Store一款宝藏软件,克魔助手抓包工具,app刚上架,功能不断迭代中,目前18软妹币实惠价可享受终身版!现在是下手的最好时机。
|
9天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android&#39;s AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
10 0
|
9天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
9 0
|
1月前
|
Shell 开发工具 Android开发
ADB 下载、安装及使用教程:让你更好地管理 Android 设备
ADB 下载、安装及使用教程:让你更好地管理 Android 设备
508 2
|
1月前
|
移动开发 JavaScript Android开发
Android与Html5交互
Android与Html5交互
|
2月前
|
存储 SQL 数据库
安卓移动应用开发(安卓系统开发教程)
安卓移动应用开发(安卓系统开发教程)
48 1
|
2月前
|
XML Android开发 数据格式
安卓和webview交互
安卓和webview交互
25 0
|
3月前
|
Android开发 iOS开发
【教程】如何在苹果手机上查看系统文件?
苹果手机与安卓手机不同,无法直接访问系统文件夹。但是,如果我们想要查看苹果手机的系统文件,可以借助一些工具来实现。本文将介绍一款名为克魔助手的iOS设备管理软件,它能帮助我们轻松查看苹果手机的系统文件。 连接iPhone到电脑,打开克魔助手,用数据线将iPhone连接到电脑上。连接成功后,克魔助手会自动读取iPhone的信息,并显示在软件的主界面上。
【教程】如何在苹果手机上查看系统文件?

热门文章

最新文章