Vuforia редактировать скрипт по умолчанию - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь использовать 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;
        }
    }

Но я не знаю, как это сделать, поэтому, если кто-то может помочь мне дать идеи по решению, это будет оценено.

Большое спасибо.

1 Ответ

0 голосов
/ 29 мая 2020

Более простой способ - создать новый скрипт, прикрепленный к каждому маркеру, который вы хотите сравнить. Например:

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

Тогда вам нужно знать, что когда Vuforia находит или теряет маркер, GameObject включается или отключается.

Вы можете указать поведение c при обнаружении (включено) или утеряно (отключить) с помощью методов 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 .

Теперь вы видите, какие маркеры активны.

...