Unity与安卓交互(以震动为例)
Unity与安卓交互
一、AndroidStudio
1.打开AndroidStudio后新建一个Empty Acticity项目
2.点击Next进行下一步
3.name自己取一个,包名我设置为com.unity3d.player,接入多个sdk容易整合语言我们选择java,Api设置为17,然后点击Finish完成
name: TestDemo
Package name: com.unity3d.player
language: Java
Api: 17
4.稍等AS加载一下,我们就可以搭建安卓和Unity通讯了
5.我们将AS切换到Project视图
6.将Unity的jar包放到AS的app-libs文件夹下
jar包的位置:
你的Unity安装位置\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes
AS的app-libs打开快捷方式
复制粘贴过来就行了
7.将jar包添加到Library
(1.)我们右键点击app,然后选择Open Moudle Settings打开模式设置
看到classes.jar包被依赖上了
(2.)右键libs下的classes,然后选择add As Libratr…
点击Ok!
8.加载完成后就可以修改MainActivity.jar文件
先找到它
(1.)将MainActivity.jar文件的继承从 AppCompatActivity 改成 UnityPlayerActivity
(2.)删掉文件中灰色的引用:
(3.)删掉 setContentView(R.layout.activity_main);
(4.)打开app文件夹下的build.gradle
1)、最上方的 apply plugin: ‘com.android.application’ 改为 apply plugin: ‘com.android.library’
2)、注释掉 applicationId “你的包名”
3)、注释掉测试用的 testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”
注释掉下面的这四项
9.删掉styles.xml文件
文件位置:app-src-main-res-values-styles.xml
10.修改activity_main.xml
文件位置:app-src-main-res-layout-activity_main.xml
1.)如果界面是这个样子的,就点击下面这个Text
2.)删掉红框所选区域
3.)删掉灰色代码
11.修改AndroidManianifest.xml文件
文件位置:app/src/main/AndroidManianifest.xml
a、将 android:theme="@style/AppTheme"> 改为 android:theme="@android:style/Theme.NoTitleBar">
b、将 改为
12.我们返回MainActivity.jar文件添加方法,供Unity调用
1.)添加 UnityCallShake 方法,
public void UnityCallShake(String msg){
Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_LONG).show();
Vibrator vibrator=(Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);
vibrator.vibrate(2000);
}
2.)需要import这几个包
import android.app.Service;
import android.os.Vibrator; import
android.widget.Toast;
点击这个小灯泡
添加震动权限
13.导出jar包
等待加载完成
14.找到jar包,打开文件位置,解压jar包
jar包位置:app-build-outputs-arr-app-debug.arr
使用你的压缩软件解压,没有解压选项选择打开方式,如果你的解压软件不支持,那就下载一个别的
解压完成
将文件里的libs、res、AndroidManifest.xml文件 复制到Unity文件夹Assets-Plugins-Android文件夹下。
删掉libs文件夹的classes.jar包,替换为②解压文件根目录里的classes.jar包。
15.在Unity调用Jar包
using UnityEngine;
public class ClickShake : MonoBehaviour {
AndroidJavaObject JavaObject;
void Start () {
//以下两行是调用AScurrentActivity中方法的默认写法。不需修改。
AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
JavaObject = androidJavaClass.GetStatic<AndroidJavaObject>("currentActivity");
}
public void ClickShakeBtn()
{
JavaObject.Call("UnityCallShake", "来自Unity的调用");
}
16.打包
a、包名与AS保持一致
b、Unity最小API与AS保持一致
c、用Internal打包
本文转自博主橙子va
上一篇: php 数组函数总结