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

开始测试第一个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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值