(个人)AR电子书系统创新实训第二周(2)

来源:互联网 发布:mac 终端如何上传文件 编辑:程序博客网 时间:2024/06/13 04:24

开始测试第一个DEMO

首先,我按照上一篇博客里的方法,给定了一些prefab以及其他控件:

在EasyAR/Prefabs/Primitives文件夹下把ImageTarget预制体拖到场景中,该物体上面有ImageTargetBehaviour,我们可以设置Path跟Name跟Storage类型等,如果Storage类型是Assets,即对应的Path路径是StreamingAssets文件夹下的路径。

这里写图片描述

我们把识别图拖到该文件夹下,如果没有该文件夹,可以自己创建一个,注意名字不能写错。

假设图片名字为”argame01.jpg”,则Path为”argame01.jpg”,Name的话可以自己定义,主要是用来做标识符。在ImageTarget上面主要有两个事件,TargetFound跟TargetLost。在识别图识别成功的时候,会调用TargetFound事件,但识别图丢失以后,会调用TargetLost事件。

一般我们会在TargetLost里面把ImageTarget下的所有网格渲染给禁用,这样就看不到物体了,当然也可以把模型物体的active设置为false。然后在TargetFound里把渲染器打开,或者设置为active。

代码如下:

using UnityEngine;namespace EasyAR{    public class ImageTargetBehaviour : ImageTargetBaseBehaviour    {        protected override void Awake()        {            base.Awake();            TargetFound += OnTargetFound;            TargetLost += OnTargetLost;            TargetLoad += OnTargetLoad;            TargetUnload += OnTargetUnload;        }        protected override void Start()        {            base.Start();            HideObjects(transform);        }        void HideObjects(Transform trans)        {            for (int i = 0; i < trans.childCount; ++i)                HideObjects(trans.GetChild(i));            if (transform != trans)                gameObject.SetActive(false);        }        void ShowObjects(Transform trans)        {            for (int i = 0; i < trans.childCount; ++i)                ShowObjects(trans.GetChild(i));            if (transform != trans)                gameObject.SetActive(true);        }        void OnTargetFound(ImageTargetBaseBehaviour behaviour)        {            ShowObjects(transform);            Debug.Log("Found: " + Target.Id);        }        void OnTargetLost(ImageTargetBaseBehaviour behaviour)        {            HideObjects(transform);            Debug.Log("Lost: " + Target.Id);        }        void OnTargetLoad(ImageTargetBaseBehaviour behaviour, ImageTrackerBaseBehaviour tracker, bool status)        {            Debug.Log("Load target (" + status + "): " + Target.Id + " (" + Target.Name + ") " + " -> " + tracker);        }        void OnTargetUnload(ImageTargetBaseBehaviour behaviour, ImageTrackerBaseBehaviour tracker, bool status)        {            Debug.Log("Unload target (" + status + "): " + Target.Id + " (" + Target.Name + ") " + " -> " + tracker);        }    }}

现在打包出apk安装,扫描到我事先准备的图片,图片就会变成视频一样播放。

阅读全文
0 0
原创粉丝点击