Хорошо, это не точное решение, учитывая ответ на этот вопрос github от разработчиков Google, но оно решает проблему.Как я уже говорил в моих комментариях TrackableQueryFilter.Updated
дает вам изображения, которые обновляются (не только с точки зрения статуса, но и т.д.) в текущем кадре.Поэтому, когда я регистрирую m_TempAugmentedImages.Count
для 318 кадров, когда мое изображение находится в поле зрения моего телефона и отслеживается, мое изображение обновляется 18 раз.
Поскольку нет способа узнать, когда изображение обновляется, и это происходит не часто, я подумал о том, чтобы проверить, если изображение не обновляется в течение 3 секунд, я могу уничтожить изображение.Для этого я добавил public float TimePassed
в мой AugmentedImageVisualizer
скрипт.Затем в моем скрипте AugmentedImageController
я добавил эти строки, чтобы проверить TimePassed
каждого изображения в сеансе следующим образом:
foreach (var visualizer in m_Visualizers.Values)
{
// if image is Updated TimePassed is assigned to zero for that image
if (m_TempAugmentedImages.Count != 0 && visualizer.Image == m_TempAugmentedImages[0])
{
visualizer.TimePassed = 0;
}
else
{
visualizer.TimePassed += Time.deltaTime;
}
if (visualizer.TimePassed > 3.0f)
{
Debug.Log("Destroy is called");
m_Visualizers.Remove(visualizer.Image.DatabaseIndex);
GameObject.Destroy(visualizer.gameObject);
}
}
Я построил его, и таким образом вы можете вернуться к изображениям, которыеотслеживается раньше, и если вы недовольны примерно 3 секундами, вы также можете опустить его.Удачи