ImageTargetBaseBehaviour Class

Inherits: TargetAbstractBehaviour

Description

ImageTargetBaseBehaviour是在AR场景中控制ImageTarget的component。

你需要设置ImageTargetBaseBehaviour为与target相关需要显示的3D内容的父节点。ARCamera与跟踪到的Target之间的相对位置(transform )是由EasyAR控制的。

为了使用ImageTargetBaseBehaviour(让tracker跟踪ImageTargetBaseBehaviour内部的target),你必须先使用图片或json设置(setup)这个component然后将这个ImageTargetBaseBehaviour加载到ImageTrackerBaseBehaviour中。

通常有两种方法可以设置(setup)这个component。一个是设ActiveTargetOnStart为true然后设置一些变量(Name、Path、Size和Storage),加载操作将会在 MonoBehaviour.Start 中被调用。另一个方法是手动调用SetupWith*方法。你也可以在任意时间使用SetupWith*方法重新加载target。

在设置(setup)之后你需要把ImageTargetBaseBehaviour加载进ImageTrackerBaseBehaviour。同样也有两种方法。

  1. Bind 一个 ImageTrackerBehaviour.

    ImageTargetBaseBehaviour 会在 SetupWith* 方法被显式或隐式(如果 ActiveTargetOnStart 是true,会在 MonoBehaviour.Start 中加载)的调用之后自动加载进入绑定的 ImageTrackerBaseBehaviour

    如果 SetupWith* 方法在 Bind 之前被调用,那 ImageTargetBaseBehaviour 将在调用 Bind 的同时被加载进入绑定的 ImageTrackerBaseBehaviour

  2. 调用 ImageTrackerBaseBehaviourImageTrackerBaseBehaviour.LoadImageTargetBehaviour

    这将与调用 Bind 产生同样的效果,但是必需在该调用之前先使用 SetupWith*ImageTargetBaseBehaviour 进行设置。

target被检测到和丢失的事件通知为 TargetAbstractBehaviour.TargetFound / TargetAbstractBehaviour.TargetLostARCameraBaseBehaviour.TargetFound / ARCameraBaseBehaviour.TargetLost

可以通过 ARCameraBaseBehaviour.FrameUpdate 的事件处理函数获得 Frame ,它包含当前相机图像和当前被跟踪到的 TargetInstance

Public Fields

bool ActiveTargetOnStart
string Name
string Path
Vector2 Size
StorageType Storage
ImageTarget Target

Public Properties

List<ImageTrackerBaseBehaviour> Loaders

Public Functions

void Bind(ImageTrackerBaseBehaviour behaviour)
bool SetupWithImage(string path, StorageType storageType, string targetname, Vector2 size)
bool SetupWithJsonFile(string path, StorageType storageType, string targetname)
bool SetupWithJsonString(string json, StorageType storageType, string targetname)
bool SetupWithTarget(ImageTarget target)
static List<ImageTarget> LoadListFromJsonFile(string path, StorageType storageType)
static List<ImageTarget> LoadListFromJsonString(string json, StorageType storageType)

Public Events

event Action<ImageTargetBaseBehaviour, ImageTrackerBaseBehaviour, bool> TargetLoad
event Action<ImageTargetBaseBehaviour, ImageTrackerBaseBehaviour, bool> TargetUnload

Overwritten MonoBahaviour Functions

protected virtual void Awake()
protected virtual void OnDestroy()
protected virtual void Start()
protected virtual void Update()

bool ActiveTargetOnStart

是否在 MonoBehaviour.Start 被调用时setup target。

string Name

target名字。如果ActiveTargetOnStart为true,set操作应该在 MonoBehaviour.Start 之前调用。这个值将在target setup并加载进入tracker之后更新,可以在事件TargetLoad中获取。

string Path

target的路径。如果ActiveTargetOnStart为true,set操作应该在 MonoBehaviour.Start 之前调用。这个值将在target setup并加载进入tracker之后更新,可以在事件TargetLoad中获取。

Vector2 Size

target的大小。如果ActiveTargetOnStart为true,set操作应该在 MonoBehaviour.Start 之前调用,并且只有非{0, 0}值会被用来初始化Target的大小。这个值将在target setup并加载进入tracker之后更新,可以在事件TargetLoad中获取。

StorageType Storage

target存储位置的类型。 如果ActiveTargetOnStart为true,set操作应该在 MonoBehaviour.Start 之前调用。这个值将在target setup并加载进入tracker之后更新,可以在事件TargetLoad中获取。

ImageTarget Target

ImageTarget物体。target的所有属性将在target setup并加载进入tracker之后更新,可以在事件TargetLoad中获取。

List<ImageTrackerBaseBehaviour> Loaders

当前加载了这个component的所有loader(ImageTrackerBaseBehaviour)。

void Bind(ImageTrackerBaseBehaviour behaviour)

Binds ImageTrackerBaseBehaviour。

如果ImageTrackerBaseBehaviour 被绑定, ImageTargetBaseBehaviour 会在 SetupWith* 方法被显式或隐式(如果 ActiveTargetOnStart 是true,会在 MonoBehaviour.Start 中加载)的调用之后自动加载进入绑定的 ImageTrackerBaseBehaviour , 这种情况下 ImageTrackerBaseBehaviour.LoadImageTargetBehaviour 会被隐式调用。

如果 SetupWith* 方法在 Bind 之前被调用,那 ImageTargetBaseBehaviour 将在调用 Bind 的同时被加载进入绑定的 ImageTrackerBaseBehaviour

SetupWith* 方法调用之后显式调用 ImageTrackerBaseBehaviour.LoadImageTargetBehaviour 将会产生与调用 Bind 同样的效果。

bool SetupWithImage(string path, StorageType storageType, string targetname, Vector2 size)

使用图像配置target。这个方法只会配置target的属性,不会从存储数据中加载 target 。

配置target,使用类型为 storageType 的 path 的图片,并设置target名字为 targetname ,大小为 size 。

storageType应该设成 StorageType.AppStorageType.AssetsStorageType.Absolute ,表示路径的类型。

关于StorageType的详细描述参见 StorageType

component上的Target将会从所有Loader上卸载。如果要使用tracker跟踪这个target,需要重新加载这个component到ImageTrackerBaseBehaviour。

bool SetupWithJsonFile(string path, StorageType storageType, string targetname)

使用json文件配置target。这个方法只会配置target的属性,不会从存储数据中加载 target 。

配置target,如果name非空则使用名字为name的target,否则使用json文件中的第一个target。

storageType应该设成 StorageType.AppStorageType.AssetsStorageType.Absolute ,表示路径的类型。json文件内部的路径应该是绝对路径或相对于json文件的相对路径。

关于StorageType的详细描述参见 StorageType

component上的Target将会从所有Loader上卸载。如果要使用tracker跟踪这个target,需要重新加载这个component到ImageTrackerBaseBehaviour。

bool SetupWithJsonString(string json, StorageType storageType, string targetname)

使用json字符串配置target。这个方法只会配置target的属性,不会从存储数据中加载 target 。

配置target,如果name非空则加载名字为name的target,否则加载json字符串中的第一个target。

storageType应该设成 StorageType.AppStorageType.AssetsStorageType.Absolute ,表示路径的类型。json字符串内部的路径应该是绝对路径或相对于storageType所指向的根目录的相对路径。

关于StorageType的详细描述参见 StorageType

component上的Target将会从所有Loader上卸载。如果要使用tracker跟踪这个target,需要重新加载这个component到ImageTrackerBaseBehaviour。

bool SetupWithTarget(ImageTarget target)

通过云端返回的Target来配置这个component。

component上的Target将会从所有Loader上卸载。如果要使用tracker跟踪这个target,需要重新加载这个component到ImageTrackerBaseBehaviour。

static List<ImageTarget> LoadListFromJsonFile(string path, StorageType storageType)

返回在类型为 storageType 的 path中json的文件中指定的target列表。在返回前这些target将使用json文件中的信息配置完毕。

关于storageType和json文件的描述参见Load和 StorageType

static List<ImageTarget> LoadListFromJsonString(string json, StorageType storageType)

返回在json字符串中指定的target列表。在返回前这些target将使用json字符串中的信息配置完毕。

关于storageType和json文件的描述参见Load和 StorageType

event Action<ImageTargetBaseBehaviour, ImageTrackerBaseBehaviour, bool> TargetLoad

Target加载结束事件。将在target被加载进tracker后被触发。

ImageTrackerBaseBehaviour.TargetLoad 也会被同时触发。

event Action<ImageTargetBaseBehaviour, ImageTrackerBaseBehaviour, bool> TargetUnload

Target卸载结束事件。将在target被从tracker卸载后被触发。

ImageTrackerBaseBehaviour.TargetUnload 也会被同时触发。