[Unity3D]Unity+Android交互教程——让手机"动"起来
想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用,真不好使,一导入运行就报错,调好错了再运行发现点按钮没反应,反复试了几遍发现还是没反应,没办法看源码,结果发现只实现了IOS部分,没有Android部分,我屮艸芔茻...,神伤!用IOS真机测试吧,还是有问题,果断放弃了,下定决心自己动手丰衣足食,虽然不了解Android,但没有学不起来的,只要想,就没有实现不了的!!!首先还是得学习一下Android和Unity的简单交互,在这儿写个详细点的教程!供初学者学习,当然网上也有这方面的教程,有的地方不注意的话,还是会碰到困扰的,下面是详细步骤!更多教程敬请关注我的微博!
效果:这里展示的Unity调用Android原生的方法实现点击Unity界面中的按钮,然后实现手机的震动!
测试方法:必须要真机测试!!!
实现步骤:
一、创建Android工程
1.创建工程
2.导入Unity相关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并且添加震动权限
5.导出jar包
二、创建Unity工程
1.在Assets下创建Plugins/Android文件夹,这个文件夹是特殊文件夹,专门用与存放Android的包文件,以便调用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视图,然后调用自定义方法。
3.导出设置(Importent)
4.真机测试
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。