MultiImageTracking.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. using UnityEngine.XR.ARFoundation;
  4. /// <summary>多图跟踪</summary>
  5. public class MultiImageTracking : MonoBehaviour
  6. {
  7. private ARTrackedImageManager ImgTrackedManager;
  8. private List<GameObject> mPrefabs = new List<GameObject>();
  9. private void Awake()
  10. {
  11. ImgTrackedManager = GetComponent<ARTrackedImageManager>();
  12. }
  13. private void Start()
  14. {
  15. //mPrefabs.Add(Resources.Load("Prefabs/Rafflesia") as GameObject);
  16. //mPrefabs.Add(Resources.Load("Prefabs/Logo") as GameObject);
  17. //mPrefabs.Add(Resources.Load("Prefabs/QRCode") as GameObject);
  18. //mPrefabs.Add(Resources.Load("Prefabs/One") as GameObject);
  19. //mPrefabs.Add(Resources.Load("Prefabs/Two") as GameObject);
  20. }
  21. private void OnEnable()
  22. {
  23. ImgTrackedManager.trackedImagesChanged += OnTrackedImagesChanged;
  24. }
  25. private void OnDisable()
  26. {
  27. ImgTrackedManager.trackedImagesChanged -= OnTrackedImagesChanged;
  28. }
  29. private void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs)
  30. {
  31. foreach (var trackedImage in eventArgs.added)
  32. {
  33. OnImagesChanged(trackedImage);
  34. }
  35. }
  36. private void OnImagesChanged(ARTrackedImage referenceImage)
  37. {
  38. Debug.Log("Image name:" + referenceImage.referenceImage.name);
  39. switch (referenceImage.referenceImage.name)
  40. {
  41. case "Rafflesia":
  42. Instantiate(mPrefabs[0], referenceImage.transform);
  43. break;
  44. case "Logo":
  45. Instantiate(mPrefabs[1], referenceImage.transform);
  46. break;
  47. case "QRCode":
  48. Instantiate(mPrefabs[2], referenceImage.transform);
  49. break;
  50. case "One":
  51. Instantiate(mPrefabs[3], referenceImage.transform);
  52. break;
  53. case "Two":
  54. Instantiate(mPrefabs[4], referenceImage.transform);
  55. break;
  56. }
  57. }
  58. }