unity3d与安卓交互:unity打包aar给安卓工程调用(含有Vuforia)
原创
©著作权归作者所有:来自51CTO博客作者四夕立羽的原创作品,请联系作者获取转载授权,否则将追究法律责任
Unity 打包 as工程
1.监听安卓返回键,关闭unity自身activity
void Update () {
if (Input.GetKeyUp(KeyCode.Escape))
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("onBackPressed");
}
}
2.导入vuforia,制作好demo
3.修改包名
4.导出as 工程
As工程打包出aar
1.增加监听返回键的处理
中加入代码
@Override
public void onBackPressed() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mUnityPlayer.quit();
}
});
super.onBackPressed();
}
2.AndroidManifest中去掉intent-filter 标签
防止apk出现两个icon
3.Gradle中修改
apply plugin: 'com.android.application'
改为
apply plugin: 'com.android.library'
删除
applicationId
Build > Make Project ,Android Studio 会将项目打包成 AAR 文件,并放入 build/outputs/aar 文件夹中
As工程引用aar
1.把VuforiaWrapper.aar 与打包出来的aar放在这
2.点击File->new ->New Module->import .JAR/.AAR Package
把刚放入的两个aar引入
3.AndroidManifest修改
告诉 merge 合并程序使用哪一个 Icon 和 Theme ,分别在 manifest 标签和 application 标签下添加代码:
xmlns:tools="http://schemas.android.com/tools"
tools:replace="android:icon,android:theme"
4.Gradle修改
修改sdk版本号一致,增加依赖aar(有几个加几个)
5.java代码修改
增加按钮响应,调起unity的activity
package com.example711.xx.test711_1;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.test710.luoyikun.UnityPlayerActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = new Intent(MainActivity.this, UnityPlayerActivity.class);
startActivity(intent);
}
});
}
}
6.结果
源工程下载地址
https://pan.baidu.com/s/19JGvGD-beQPwsgX6rOx9XA