ObjectTargetBaseBehaviour Class

Inherits: TargetAbstractBehaviour

Description

ObjectTargetBaseBehaviour是在AR场景中控制ObjectTarget的component。

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

为了使用ObjectTargetBaseBehaviour(让tracker跟踪ObjectTargetBaseBehaviour内部的target),你必须先使用obj文件或json设置(setup)这个component然后将这个ObjectTargetBaseBehaviour加载到ObjectTrackerBaseBehaviour中。

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

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

  1. Bind 一个 ObjectTrackerBehaviour.

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

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

  2. 调用 ObjectTrackerBaseBehaviourObjectTrackerBaseBehaviour.LoadObjectTargetBehaviour

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

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

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

ObjectTarget 节点下的物体Rotation 需要设成,

X: 90
y: 180
z: 0
../_images/image842.png ../_images/image852.png ../_images/image862.png

Public Fields

bool ActiveTargetOnStart
string Name
string Path
float scale
StorageType Storage
ObjectTarget Target

Public Properties

List<ObjectTrackerBaseBehaviour> Loaders

Public Functions

void Bind(ObjectTrackerBaseBehaviour behaviour)
bool SetupWithObj(string path, StorageType storageType, string targetname, float scale)
bool SetupWithJsonFile(string path, StorageType storageType, string targetname)
bool SetupWithJsonString(string json, StorageType storageType, string targetname)
static List<ObjectTarget> LoadListFromJsonFile(string path, StorageType storageType) (since 2.1.0)
static List<ObjectTarget> LoadListFromJsonString(string json, StorageType storageType) (since 2.1.0)

Public Events

event Action<ObjectTargetBaseBehaviour, ObjectTrackerBaseBehaviour, bool> TargetLoad
event Action<ObjectTargetBaseBehaviour, ObjectTrackerBaseBehaviour, 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中获取。

float scale

target的scale。如果ActiveTargetOnStart为true,set操作应该在 MonoBehaviour.Start之前调用。

StorageType Storage

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

ObjectTarget Target

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

List<ObjectTrackerBaseBehaviour> Loaders

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

void Bind(ObjectTrackerBaseBehaviour behaviour)

Binds ObjectTrackerBaseBehaviour。

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

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

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

bool SetupWithObj(string path, StorageType storageType, string targetname, float scale)

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

配置target,使用类型为 storageType 的 path 的obj文件,并设置target名字为 targetname ,比例为 scale 。

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

关于StorageType的详细描述参见 StorageType

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

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到ObjectTrackerBaseBehaviour。

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到ObjectTrackerBaseBehaviour。

static List<ObjectTarget> LoadListFromJsonFile(string path, StorageType storageType) (since 2.1.0)

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

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

static List<ObjectTarget> LoadListFromJsonString(string json, StorageType storageType) (since 2.1.0)

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

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

event Action<ObjectTargetBaseBehaviour, ObjectTrackerBaseBehaviour, bool> TargetLoad

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

ObjectTrackerBaseBehaviour.TargetLoad 也会被同时触发。

event Action<ObjectTargetBaseBehaviour, ObjectTrackerBaseBehaviour, bool> TargetUnload

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

ObjectTrackerBaseBehaviour.TargetUnload 也会被同时触发。