基于 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);  
    }  
}  

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

相关文章推荐

Vuforia开发技巧-用手指拖拽Augmented模型

原文链接:http://www.arvrschool.com/read.php?tid=77&fid=21 AR/VR技术交流群 129340649 前面文章介绍了怎么对3D模型进行缩放、...
  • ggtaas
  • ggtaas
  • 2015年09月03日 23:20
  • 2304

Unity用Vuforia做AR实现脱卡效果

有时在识别目标丢失后我们仍希望虚拟物体能够出现在摄像机前,或者到一个特定的位置,我们能对其进行操作,这就是脱卡功能。 自带的脱卡功能应该是ExtendedTracking:允许模型在识别图丢失的时候...

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

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

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

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

AR 增强现实 开发入门详解 android studio Vuforia(二)更换背景目标图片

在(一)中我们成功把demo跑起来了,接下来就是更换目标图片,如果demo没有跑起来点击这里 更换图片也是分两步,第一步 官方准备 https://developer.vuforia.c...

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

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

『笔记』高通Vuforia 通过unity实现Android AR开发笔记

实现通过Vuforia网站生成文件-》unity 3d-》输出Android代码   1.Vuforia网站 首先到https://developer.vuforia.com注册账号(需要验证邮...

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

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

AR(增强现实) unity+vuforia 基础教程(2)!

默认已经下载vuforia for unity,请移步到https://developer.vuforia.com/downloads/sdk! 1 打开unity,然后建立一个新的Project。 ...
  • x266853
  • x266853
  • 2016年06月12日 22:38
  • 436

Android Studio上Vuforia AR引擎入门Demo

前言:去年VR火得一塌糊涂,但也没拿出像样的成绩单,反而为广大宅男带来福利(呵呵,你懂的。。。) 但是这毕竟是一大趋势,而与VR同样吸引人的还有AR和MR技术,它三分别代表Virtual Realit...
  • zeqiao
  • zeqiao
  • 2017年01月19日 16:44
  • 2010
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于 vuforia + unity + android studio 的AR开发(2)
举报原因:
原因补充:

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