基于 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 + unity + android studio 的AR开发(1)

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

AR 学习记录 unity+vuforia+ android 初次搭建

部分摘自 http://www.w2bc.com/article/219707 使用高通的vuforiaSDK网址:https://developer.vuforia.com/我们想要使用vuf...
  • mczhao0502
  • mczhao0502
  • 2017年04月16日 23:15
  • 629

AR移动应用开发(一) Unity与EasyAR

AR应用开发(一) Unity与EasyAR 从老师哪里接到了一个小项目。具体就是主一款具有AR功能的旅游应用。而AR方面的需求十分简单,就是识别图片,并显示出对应模型就行了。就跟EasyAR的Un...
  • qq_33205561
  • qq_33205561
  • 2017年05月26日 22:32
  • 446

Android插件式开发+unity3d+EasyAr完成android实现ar插件式功能

android实现内置插件式开发,并且开发内容为基于Easyar实现Ar
  • LZ511321
  • LZ511321
  • 2017年12月06日 17:09
  • 443

使用Unity 创建自己的android AR 项目

一、经过了前两篇文章的洗礼,相信大家都能把自己的开发环境搭建起来了。因为我之前从没有学过Unity, 所有在创建自己的Unity android AR 项目的时候,着实费了一番苦心。...
  • treetor
  • treetor
  • 2014年04月03日 16:52
  • 2075

Unity+Vuforia SDKAR开发系列教程--2.1.2 Vuforia许可证管理

2.1.2 Vuforia许可证管理在使用vuforia sdk4.x版本会出现水印,如何把水印去除呢,当然就是进行购买许可。在之前版本中vuforia sdk只是云服务才需要花钱购买,在升级到4.0...
  • liang_704959721
  • liang_704959721
  • 2016年09月17日 20:32
  • 613

(Unity3d)Vuforia开发基础五-模型交互

最后再来说说模型怎么交互。模型交互主要还是以下这些交互方式:  主要的交互方式包括:  1、模型的旋转、平移和缩放  这些需要配合触屏来操作。  2、模型的选定-射线法  模型选定之后显示高...
  • gaojinjingg
  • gaojinjingg
  • 2016年10月28日 18:00
  • 933

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

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

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

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

Android Studio上Vuforia AR引擎入门Demo

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

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