Невозможно отсканировать ранее отсканированную метку C# AR Foundation Unity3D

Инетересует вопрос:

Имеется скрипт способный распознавать n-ное количество меток и помещать поверх них объекты (количество меток = количеству помещенных на них объектов) https://ibb.co/gF9FqGS

Недочет логики скрипта в том, что предыдущую метку уже невозможно отсканировать и приходится перезапускать приложение.

Пример: Имеется 10 меток, отсканировав к примеру девятую - восьмую отсканировать уже невозможно в случае если она была отсканирована ранее в этой сессии приложения. Приходится перезапускать приложение.

В чем ошибка или неполноценность кода? Заранее благодарен!

Собственно весь скрипт:

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;
using UnityEngine.XR.ARFoundation;

[RequireComponent(typeof(ARTrackedImageManager))]

public class ImageTracking : MonoBehaviour
{

   [SerializeField]
   private GameObject[] placeablePrefabs;

   private Dictionary<string, GameObject> spawnedPrefabs = new Dictionary<string, GameObject>();
   private ARTrackedImageManager trackedImageManager;

   private void Awake()
   {
       trackedImageManager = FindObjectOfType<ARTrackedImageManager>();

       foreach(GameObject prefab in placeablePrefabs)
       {
           GameObject newPrefab = Instantiate(prefab, Vector3.zero, Quaternion.identity);  
           newPrefab.name = prefab.name;
           spawnedPrefabs.Add(prefab.name, newPrefab);
       }
   }

   private void OnEnable()
   {
      trackedImageManager.trackedImagesChanged += ImageChanged;
   }

   private void OnDisable()
   {
       trackedImageManager.trackedImagesChanged -= ImageChanged;
   }

   private void ImageChanged(ARTrackedImagesChangedEventArgs eventArgs)
   {
       foreach(ARTrackedImage trackedImage in eventArgs.added)
       {
           UpdateImage(trackedImage);
       }
       foreach(ARTrackedImage trackedImage in eventArgs.updated)
       {
           UpdateImage(trackedImage);
       }
       foreach(ARTrackedImage trackedImage in eventArgs.removed)
       {
           spawnedPrefabs[trackedImage.name].SetActive(false);
       }
   }    

   private void UpdateImage(ARTrackedImage trackedImage)
   {
       string name = trackedImage.referenceImage.name;
       Vector3 position = trackedImage.transform.position;

       GameObject prefab = spawnedPrefabs[name];
       prefab.transform.position = position;
       prefab.SetActive(true);

       foreach(GameObject go in spawnedPrefabs.Values)
       {
           if(go.name != name)
           {
               go.SetActive(false);
           }
       }
   }
   
}```

Ответы (0 шт):