开始测试第一个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安装,扫描到我事先准备的图片,图片就会变成视频一样播放。