基于 vuforia + unity + android studio 的AR开发(2)

原创 2017年01月03日 10:53:38

前面说了怎么把vuforia 添加到 unity工程里,现在说下怎么把unity工程导入到android studio 里面,实现在android studio 里面开发AR
一、打开Build Setting
这里写图片描述
这里写图片描述

这里写图片描述
二、导出文件

1.按这个配置,然后点击 Build APP run可以直接以APK文件在手机运行

这里写图片描述

2.导出为android studio文件,点击export即可导出

这里写图片描述

导出后的文件如下,很熟悉的android文件吧,然后把里面的东西全部复制到我们自己的工程

这里写图片描述

三、在android studio里面编辑

让你的activity继承UnityPlayerActivity,在需要的地方用addView方法把mUnityPlayer加进去就行了
public class Main2Activity extends UnityPlayerActivity {

    private ProgressDialog progressDialog;
    private boolean isClick=false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        LinearLayout linearLayout = (LinearLayout) findViewById(R.id.up);

        linearLayout.addView(mUnityPlayer);

        progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("加载中。。。");
        progressDialog.show();
        mUnityPlayer.windowFocusChanged(true);

    }

    @Override
    protected void onResume() {
        super.onResume();
        isClick=false;
    }

    //对应unity中调用方法
    public void HideSplash(){
        progressDialog.dismiss();
    }

    //对应unity中 点击事件
    public void ClickModel(){

        if(!isClick){
            isClick=true;
            startActivity(new Intent(this,Main3Activity.class));

        }

    }


@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            onDestroy();
        }
        return true;
    }

    public void bu1(View view) {
        Toast.makeText(this, "bu1bu1bu1bu1", Toast.LENGTH_SHORT).show();
    }
}

四、unity android studio 方法互调
参考这篇文章,写的不错
http://blog.csdn.net/crazy1235/article/details/46733221

五、下面是在unity中可能会用到的脚本

1、这个脚本控制模型的点击事件,通过OnclickModel 方法实现与android studio的交互

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Vuforia;

public class Touch : MonoBehaviour {
    private string name; 
    public GUISkin mySkin; 
    public Text text;
    // Use this for initialization
    void Start () {
        //自动对焦的方法
        GameObject ARCamera=GameObject.Find("ARCamera");
        CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
    }

    // Update is called once per frame
    void Update () {
        //自动对焦的方法
        CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);

        if (Input.touchCount == 1) 
        { 
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机发出到点击坐标的射线 
            RaycastHit hitInfo; 


            if(Physics.Raycast(ray,out hitInfo))
            {
                Debug.DrawLine(ray.origin,hitInfo.point);//划出射线,只有在scene视图中才能看到
                GameObject gameObj = hitInfo.collider.gameObject;
                //gameObj.transform.parent.renderer.material = mats<i>;//设置父组件的材质
                if(Input.GetTouch(0).tapCount==1){
                    text.color = Color.red;

                    OnclickModel ();

                }
            }



        } 
    }



    //调用android想对应的方法
    void OnclickModel(){
        using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
        {
            using( AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"))
            {
                //调用Android插件中UnityTestActivity中StartActivity0方法,stringToEdit表示它的参数
                jo.Call ("ClickModel");
            }

        }

    }
}

2.这个脚本很用用处,在vuforia 启动时候会有很长一段时间的黑屏,这个方法可以在vuforia 启动完毕以后调用android 方法

using UnityEngine;  
using System.Collections;  

public class Launcher : MonoBehaviour  
{  
    public string loadScene;  
    void Awake()  
    {  
        Debug.Log("Launcher Awake");  
        DontDestroyOnLoad(gameObject);  
    }  
    void Start()  
    {  
        Debug.Log("Launcher Start");  
        StartCoroutine(LoadSence());  
    }  
    IEnumerator LoadSence()  
    {  
        if (!string.IsNullOrEmpty(loadScene))  
        {  
            Application.LoadLevelAsync(loadScene);  
        }  
        else  
        {  
            int levelCount = Application.levelCount;  
            int curLevel = Application.loadedLevel;  
            if (curLevel + 1 < levelCount)  
                Application.LoadLevelAsync(curLevel + 1);  
        }  
        yield return 0;  
        Invoke("OnFinish", 0.5f);  
        //OnFinish();  
    }  
    void OnFinish()  
    {  
        if (Application.platform.Equals(RuntimePlatform.Android))  
        {  
            using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))  
            {  
                using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"))  
                {  
                    jo.Call("HideSplash");  
                }  

            }  
        }  
//      Destroy(gameObject);  
    }  
}  

好了,本篇博文到此结束,我也是才开始研究,有哪里不对的,望提出,大家一起交流

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Android Studio 使用Vuforia(高通)开发AR

AR作为现在的前端新技术,在许多APP中运用到,那么如何在Android studio开发环境下编译运行AR项目呢,请按下面步骤走:1.搭建Android studio android 开发环境 这个...

vofuria的开发(2)利用android studio+vuforia搭建AR开发环境

1.从Vuforia 5.0.10开始支持android studio IDE那么如何来配置这种开发环境呢?网上的安装要么不好用,要么是基于eclipse,很少有基于这款IDE的,本文所用SDK5.5...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

基于 vuforia + unity + android studio 的AR开发中遇到的问题

1、如果退出这个activity,会把整个application都退出在配置文件里, 继承UnityPlayerActivity的activity 加上android:process 属性即可

基于 vuforia + unity + android studio 的AR开发(1)

最近公司项目需求让开发类似支付宝AR红包的功能,网上大多都是基于vuforia + unity 来开发的,资料很多,但是都很老且不怎么全面,自己也走了不少弯路,现整理出来,希望对大家有所启发!本篇文章...

unity + vuforia 初体验

今天实验了增强现实的内容,使用vuforia工具实现 Vuforia扩增实境软件开发工具包(英语:Vuforia Augmented Reality SDK),是高通推出的针对移动设备扩增实境应用的软...

Unity5+Vuforia实现一个AR小Demo (2)

前言 上学期担任了导师一门选修课的TA,课程是关于VR和AR的,所以就设计了一个简单的AR小Demo实验,其实都是网络上用Unity+Vuforia做的AR效果,这里只是整理归纳一下步骤而已,分为两...

Unity5+Vuforia实现一个AR小Demo (1)

前言 上学期担任了导师一门选修课的TA,课程是关于VR和AR的,所以就设计了一个简单的AR小Demo实验,其实都是网络上用Unity+Vuforia做的AR效果,这里只是整理归纳一下步骤而已,分为两...

用Unity3D和VuforiaSDK简单做AR应用(入门)

最近刚开始接触AR技术,结合u3d,算是对增强现实应用入个门。网上的例子不胜枚举,但有些浅尝辄止,根据自己几天来的摸索,毕竟新的技术源自国外,翻起晦涩的外文,一步一个脚印终于爬了出来。先上个史记效果图...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)