using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.XR.ARFoundation; public class ImageLibraryManager : MonoBehaviour { public Text text; public ARTrackedImageManager ImagerManager; public List listARTrackedImage; private ARTrackedImage oldTrackedImage; public bool state = false; private void Awake() { } public void Start() { listARTrackedImage = new List(); oldTrackedImage = null; ImagerManager.trackedImagesChanged += OnTrackedImagesChanged; } private void OnDisable() { ImagerManager.trackedImagesChanged -= OnTrackedImagesChanged; } private void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs) { foreach (var trackedImage in eventArgs.added) { if (!listARTrackedImage.Contains(trackedImage)) listARTrackedImage.Add(trackedImage); Debug.Log(trackedImage.name); if (oldTrackedImage != trackedImage) { oldTrackedImage = trackedImage; VuforialControl.Instance.TrackingFound(trackedImage.transform, int.Parse(trackedImage.referenceImage.name), 0); } } } private void Update() { if (oldTrackedImage != null && oldTrackedImage.trackingState != UnityEngine.XR.ARSubsystems.TrackingState.Tracking) { // 离开识别图 Debug.Log(" Lost " + oldTrackedImage.name); VuforialControl.Instance.TrackingLost(int.Parse(oldTrackedImage.referenceImage.name)); oldTrackedImage = null; } foreach (var trackedImage in ImagerManager.trackables) { // Debug.Log($"Image: {trackedImage.referenceImage.name} is at " + // $"{trackedImage.transform.position}"+ $" {trackedImage.trackingState.ToString()} "); if (!listARTrackedImage.Contains(trackedImage)) listARTrackedImage.Add(trackedImage); if (trackedImage.trackingState == UnityEngine.XR.ARSubsystems.TrackingState.Tracking) { // Debug.Log(" This is " + trackedImage.referenceImage.name ); //if (oldTrackedImage != null && oldTrackedImage != trackedImage) //{ // // 切换操作 // oldTrackedImage = trackedImage; // VuforialControl.Instance.TrackingFound(oldTrackedImage.transform, int.Parse(oldTrackedImage.referenceImage.name), 0); //} //else if (oldTrackedImage != trackedImage) //{ // // 第一次识别 // oldTrackedImage = trackedImage; // VuforialControl.Instance.TrackingFound(oldTrackedImage.transform, int.Parse(oldTrackedImage.referenceImage.name), 0); //} if (oldTrackedImage != trackedImage) { oldTrackedImage = trackedImage; VuforialControl.Instance.TrackingFound(trackedImage.transform, int.Parse(trackedImage.referenceImage.name), 0); } } } if (listARTrackedImage.Count <1) { return; } //if(listARTrackedImage[0].trackingState== UnityEngine.XR.ARSubsystems.TrackingState.Tracking) // { // state = true; // // 跟踪 // } //else if (listARTrackedImage[0].trackingState != UnityEngine.XR.ARSubsystems.TrackingState.Tracking&& state ) // { // state = false; // // 暂停跟踪 // } } }