TargetAbstractBehaviour Class

Description

TargetAbstractBehaviour 是所有 TargetBaseBehaviours 的基类。

Public Properties

bool GameObjectActiveControl

Public Events

event Action<TargetAbstractBehaviour> TargetFound
event Action<TargetAbstractBehaviour> TargetLost

Overwritten MonoBahaviour Functions

protected virtual void Start()

bool GameObjectActiveControl

是否使用内置的 GameObject active 控制,如果使用,target 何时显示/隐藏将由内部行为决定。

GameObjectActiveControl 的默认行为如下,

protected virtual void Start()
{
    if (gameObjectActiveControl)
        gameObject.SetActive(false);
}

internal void OnTargetFound()
{
    if (gameObjectActiveControl)
        gameObject.SetActive(true);
}

internal void OnTargetLost()
{
    if (gameObjectActiveControl)
        gameObject.SetActive(false);
}

这是内部代码的一部分,它仅用来显示 EasyAR SDK 在 GameObjectActiveControl 开启状态下做了什么,复制这段代码到你的代码中并不会产生任何作用。如果你需要处理更加复杂的情况,可以按照下面的描述进行。

所以如果你关闭了 GameObjectActiveControl,可以在脚本中实现你所需要的改变,比如更自由的控制何时显示/隐藏物体,或完成“脱卡”所需的功能。你需要做的只是重写 Start 并实现 OnTargetFound/OnTargetLost 的事件处理。更具体一些,你可以参考如下代码在关闭 GameObjectActiveControl 后实现与默认行为相同的功能,这与 EasyAR SDK 1.x 版本中的实现相当类似,

public class EasyImageTargetBehaviour : ImageTargetBehaviour
{
    protected override void Awake()
    {
        base.Awake();
        GameObjectActiveControl = false;
        TargetFound += OnTargetFound;
        TargetLost += OnTargetLost;
    }
    protected override void Start()
    {
        base.Start();
        gameObject.SetActive(false);
    }

    void OnTargetFound(TargetAbstractBehaviour behaviour)
    {
        gameObject.SetActive(true);
    }

    void OnTargetLost(TargetAbstractBehaviour behaviour)
    {
        gameObject.SetActive(false);
    }
}

event Action<TargetAbstractBehaviour> TargetFound

Target 找到事件。在target在场景中被找到的时候触发。

event Action<TargetAbstractBehaviour> TargetLost

Target 丢失事件。在target从场景中丢失的时候触发。