VufroiaTrigger.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using LitJson;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using UnityEngine;
  6. using Vuforia;
  7. public class VufroiaTrigger
  8. {
  9. public JsonData msg;
  10. public UserSceneItem usi;
  11. public string xmlFile;
  12. public string datFile;
  13. public static string LoaclxmlFile;
  14. public static string LoacldatFile;
  15. bool isData;
  16. bool isXML;
  17. public void init()
  18. {
  19. xmlFile = msg["vuforiaXML"].ToString();
  20. datFile = msg["vuforiaDat"].ToString();
  21. LoaclxmlFile = Application.persistentDataPath + "/StreamingAssets/Vuforia/" + Path.GetFileName(xmlFile);
  22. LoacldatFile = Application.persistentDataPath + "/StreamingAssets/Vuforia/" + Path.GetFileName(datFile);
  23. LoadManager.Instance.loadVuforia(xmlFile, datFile,(bool b)=> {
  24. isXML = true;
  25. if(isData)
  26. {
  27. GameScene.Instance.StartCoroutine(loadVuforia());
  28. }
  29. }, (bool b) => {
  30. isData = true;
  31. if (isXML)
  32. {
  33. GameScene.Instance.StartCoroutine(loadVuforia());
  34. }
  35. });
  36. }
  37. IEnumerator loadVuforia()
  38. {
  39. Debug.Log("DGJ ===> 加载Database " + LoaclxmlFile);
  40. IEnumerable<ObserverBehaviour> observer = null;
  41. try
  42. {
  43. observer = VuforiaBehaviour.Instance.ObserverFactory.CreateBehavioursFromDatabase(LoaclxmlFile);
  44. }
  45. catch (System.Exception e)
  46. {
  47. }
  48. yield return observer;
  49. // Create an Image Target from the database.
  50. if(observer !=null)
  51. {
  52. List<ObserverBehaviour> list = new List<ObserverBehaviour>();
  53. foreach (ObserverBehaviour item in observer)
  54. {
  55. list.Add(item);
  56. }
  57. int count = 0;
  58. foreach (string item in usi.SpotsList.Keys)
  59. {
  60. if (list.Count > count)
  61. usi.SpotsList[item].setObVuforia(list[count]);
  62. count++;
  63. }
  64. }
  65. UIManager.Instance.HideUI(UINameConfig.LoadingPanel);
  66. UserSceneUI.Instance.obj.GetComponent<UserChooseScene>().st.SetActive(true);
  67. }
  68. }