Unity+Android交互实现,手机控制Unity

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

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


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


实现步骤:


一、创建Android工程


1.创建工程

[Unity3D]Unity+Android交互教程——让手机_android[Unity3D]Unity+Android交互教程——让手机_android_02[Unity3D]Unity+Android交互教程——让手机_android_03[Unity3D]Unity+Android交互教程——让手机_java_04



2.导入Unity相关jar

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

[Unity3D]Unity+Android交互教程——让手机_android_05




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

[java]


  1. package com.example.clickshake;  
  2. import android.os.Bundle;  
  3. import com.unity3d.player.UnityPlayerActivity;  
  4. import android.app.Service;  
  5. import android.os.Vibrator;  //震动的包  
  6. public class MainActivity extends UnityPlayerActivity {  
  7.    private Vibrator mVibrator01;//声明一个振动器对象  
  8.    @Override  
  9.    protected void onCreate(Bundle savedInstanceState) {  
  10.        super.onCreate(savedInstanceState);  
  11.    }  
  12.    //震动函数  
  13.    public void ClickShake()  
  14.    {  
  15.        mVibrator01 = (Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);  
  16.        mVibrator01.vibrate(new long[]{100,10,100,1000},-1);//自定义整栋模式,只震动一次  
  17.    }  
  18.    //判断大小  
  19.    public int Max(int a,int b)  
  20.    {  
  21.        if(a>b)  
  22.            return a;  
  23.        return b;  
  24.    }  
  25. }  

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


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

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

[Unity3D]Unity+Android交互教程——让手机_java_06


5.导出jar包

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


[Unity3D]Unity+Android交互教程——让手机_java_07


[Unity3D]Unity+Android交互教程——让手机_java_08

点击Finish结束!


二、创建Unity工程


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

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

[Unity3D]Unity+Android交互教程——让手机_java_09



2.写Unity调用Android代码

[csharp]


  1. using UnityEngine;  
  2. using System.Collections;  
  3. public class NewBehaviourScript : MonoBehaviour {  
  4.    private AndroidJavaObject activity;  
  5.    private int res = 0;  
  6.    // Use this for initialization  
  7.    void Start () {  
  8.        AndroidJavaClass jc=new AndroidJavaClass("com.unity3d.player.UnityPlayer");  
  9.        activity = jc.GetStatic<AndroidJavaObject>("currentActivity");  
  10.        res = activity.Call<int>("Max", new object[] { 10, 20 });  
  11.    }  
  12.    void OnGUI()  
  13.    {  
  14.        GUI.Label(new Rect(20, 20, 300, 20), "调用的Android方法:求出10和20中比较大的数字是"+res.ToString());  
  15.        GUI.Label(new Rect(20, 70, 300, 20), ");  
  16.        if ( GUI.Button(new Rect(Screen.width / 2 - 20, Screen.height / 2 + 20, 100, 40), "点击震动"))  
  17.        {  
  18.            activity.Call("ClickShake");  
  19.        }  
  20.    }  
  21. }  

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

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

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



3.导出设置(Importent)

[Unity3D]Unity+Android交互教程——让手机_xml_10



4.真机测试

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


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空