[Unity2d系列教程] 003.Unity如何调用android的方法

Unity开发的时候很多时候我们需要用底层一些功能,比如摄像,录音,震动等等,我们在Unity的层面是无法完成的。那么我们考虑到Unity是否可以直接调用到android方面的方法,替我们去完成我们所想要的操作。答案是有的,下面我带大家了解下unity对android的调用和一些问题的解答。

1.首先创建安卓项目

[Unity2d系列教程] 003.Unity如何调用android的方法_第1张图片[Unity2d系列教程] 003.Unity如何调用android的方法_第2张图片[Unity2d系列教程] 003.Unity如何调用android的方法_第3张图片

2.导入unity2d的class.jar

我使用的unity5.2.3,位置在于安装目录下的Unity\Editor\Data\PlaybackEngines\androidplayer\Variations\mono\Development\Classes\class.jar

3.Activity要继承UnityPlayerActivity

package com.sinyee.sdteam.clickshake;

import android.app.Service;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.Menu;

import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity{

	private Vibrator mVibrator;
	  
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 震动  
		mVibrator = (Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);  
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

    //shake  
    public void Shake(long milliseconds)  
    {  
        mVibrator.vibrate(milliseconds);  
    }  
      
    public void StopShake()  
    {  
        mVibrator.cancel();  
    }  
}

 4.导出jar包

[Unity2d系列教程] 003.Unity如何调用android的方法_第4张图片[Unity2d系列教程] 003.Unity如何调用android的方法_第5张图片[Unity2d系列教程] 003.Unity如何调用android的方法_第6张图片

5.直接finish生成jar包。

6.在unity上Assets\Plugins\Android中加入jar,xml,libs,res

[Unity2d系列教程] 003.Unity如何调用android的方法_第7张图片

7.unity上编写脚本代码

using UnityEngine;
using System.Collections;

public class testButton : MonoBehaviour {

    
    private AndroidJavaObject activity;  


	// Use this for initialization
	void Start () {

        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        activity = jc.GetStatic<AndroidJavaObject>("currentActivity");
	}
	
	// Update is called once per frame
	void Update () {
	
	}


    void OnGUI()  {  
       if ( GUI.Button(new Rect(Screen.width / 2 - 20, Screen.height / 2 + 20, 100, 40), "点击震动"))  
       {
          // 注意要用1000L,因为android那边的参数是long,不然会出错
          activity.Call("Shake", 1000L);  
       }  
     
       if ( GUI.Button(new Rect(Screen.width / 2 - 20, Screen.height / 2 + 80, 100, 40), "取消震动"))  
       {
           activity.Call("StopShake");  
       }  
  }  

}

 8.导出apk,配置注意如下

[Unity2d系列教程] 003.Unity如何调用android的方法_第8张图片

9.真机运行调试

 

你可能感兴趣的:([Unity2d系列教程] 003.Unity如何调用android的方法)