Vuforia编辑默认脚本

问题描述 投票:0回答:1

我正在尝试使用Vuforia进行匹配,以匹配与同一组相对应的图像。例如,如果相机显示存储的斑马图像和存储的狗图像,则应设置文字说正确,但如果相机捕捉到斑马图像和汽车的图像,则应设置文字说错误。我已经完成了相机的相机识别,但是我不知道要处理代码以避免默认行为。我想我必须修改C#脚本的这些部分

protected virtual void OnTrackingFound()
    {
        if (mTrackableBehaviour)
        {

            Debug.Log("Trackable " + mTrackableBehaviour.TrackableName);

            var rendererComponents = mTrackableBehaviour.GetComponentsInChildren<Renderer>(true);
            var colliderComponents = mTrackableBehaviour.GetComponentsInChildren<Collider>(true);
            var canvasComponents = mTrackableBehaviour.GetComponentsInChildren<Canvas>(true);


            // Enable rendering:
            foreach (var component in rendererComponents)
                component.enabled = true;

            // Enable colliders:
            foreach (var component in colliderComponents)
                component.enabled = true;

            // Enable canvas':
            foreach (var component in canvasComponents)
                component.enabled = true;
        }
    }


    protected virtual void OnTrackingLost()
    {
        if (mTrackableBehaviour)
        {
            var rendererComponents = mTrackableBehaviour.GetComponentsInChildren<Renderer>(true);
            var colliderComponents = mTrackableBehaviour.GetComponentsInChildren<Collider>(true);
            var canvasComponents = mTrackableBehaviour.GetComponentsInChildren<Canvas>(true);

            // Disable rendering:
            foreach (var component in rendererComponents)
                component.enabled = false;

            // Disable colliders:
            foreach (var component in colliderComponents)
                component.enabled = false;

            // Disable canvas':
            foreach (var component in canvasComponents)
                component.enabled = false;
        }
    }

但是我不知道该怎么做,因此,如果有人可以帮助我提出想法或解决方案,那将不胜感激。

非常感谢。

c# visual-studio unity3d unityscript vuforia
1个回答
0
投票

一种更简单的方法是在要比较的每个标记上创建一个新脚本。例如:

public class MyMarker : MonoBehaviour
{
  public string markerName; //Can be edited in the inspector
}

然后,您需要知道,当Vuforia发现或丢失标记时,将启用或禁用GameObject。

使用方法OnEnable()OnDisable()发现(启用)或丢失(禁用)时,您可能会有特定的行为。

public class MyMarker : MonoBehaviour
{
  public string markerName; //Can be edited in the inspector

  void OnEnable()
  {
    //The object is active
  }

  void OnDisable()
  {
    //The object is inactive 
  }
}

此外,您还可以通过myGameObject.activeInHierarchy知道游戏对象是否处于活动状态。

现在,您可以使用哪些标记。

© www.soinside.com 2019 - 2024. All rights reserved.