TemplateModel.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using SC.XR.Unity.Module_InputSystem;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using UnityEngine;
  6. public class TemplateModel : BaseTemPlate
  7. {
  8. private GameObject m_ModelObj = null;
  9. protected override void OnEnable()
  10. {
  11. base.OnEnable();
  12. StartCoroutine(LoadModel());
  13. }
  14. private IEnumerator LoadModel()
  15. {
  16. yield return new WaitForSeconds(0.01f);
  17. if (GameManager.Instance.IsRuning && m_ModelObj == null)
  18. {
  19. Debug.Log(Data.name);
  20. Debug.Log(Data.localSavePath);
  21. AssetBundle ab = AssetBundle.LoadFromFile(Data.localSavePath);
  22. if (ab == null)
  23. {
  24. Debug.Log("Failed to load AssetBundle!");
  25. }
  26. else
  27. {
  28. var prefab = ab.LoadAsset<GameObject>(ab.LoadAllAssets<GameObject>()[0].name);
  29. switch (prefab.name)
  30. {
  31. case "GHZ_OOBE_230721":
  32. GameObject obj = Resources.Load<GameObject>("GongYe");
  33. if(obj == null)
  34. {
  35. Debug.LogError(" GHZ_OOBE_230721 物体加载失败,请查看是否导入相关Packages ");
  36. obj = new GameObject();
  37. }
  38. m_ModelObj = GameObject.Instantiate(obj,transform);
  39. m_ModelObj.name = "GongYe";
  40. if (GameObject.Find("AudioManager") ==null)
  41. {
  42. GameObject audio = Resources.Load<GameObject>("AudioManager");
  43. if(audio ==null)
  44. {
  45. Debug.LogError(" GHZ_OOBE_230721 Packages内AudioManager组件丢失");
  46. audio = new GameObject();
  47. }
  48. GameObject Audio = GameObject.Instantiate(audio, transform);
  49. Audio.name = "AudioManager";
  50. }
  51. break;
  52. case "GHZ_DangJian":
  53. GameObject dj_GO = Resources.Load<GameObject>("PartyDangJian");
  54. if(dj_GO == null)
  55. {
  56. Debug.LogError(" GHZ_DangJian 物体加载失败,请查看是否导入相关Packages ");
  57. obj = new GameObject();
  58. }
  59. m_ModelObj = GameObject.Instantiate(dj_GO,transform);
  60. m_ModelObj.name = "GHZ_DangJian";
  61. break;
  62. default:
  63. m_ModelObj = Instantiate(prefab, transform);
  64. break;
  65. }
  66. //if (ab.LoadAllAssets<GameObject>()[0].name == "MRVideo")
  67. //m_ModelObj.AddComponent<MovieScreen>();
  68. gameObject.AddComponent<ManipulationHandler>();
  69. gameObject.AddComponent<BoundingBox>();
  70. gameObject.AddComponent<Patch_ModelController>();
  71. yield return new WaitForSeconds(0.3f);
  72. ab.Unload(false);
  73. HideCollider();
  74. }
  75. //var obj = DownloadManager.Instance.GetAbObj(Util.MD5Encrypt(Data.downloadPath));
  76. //if (obj != null)
  77. //{
  78. // m_ModelObj = Instantiate(obj, transform);
  79. // m_ModelObj.transform.localPosition = Vector3.zero;
  80. // m_ModelObj.gameObject.SetActive(true);
  81. //}
  82. }
  83. }
  84. protected override void OnAwake()
  85. {
  86. base.OnAwake();
  87. }
  88. public override void SetData(MaterialObjValue value, int updateTime)
  89. {
  90. base.SetData(value, updateTime);
  91. //if (gameObject.GetComponent<Collider>() != null)
  92. //{
  93. // Destroy(gameObject.GetComponent<Collider>());
  94. //}
  95. //下载列表中加入数据
  96. if (!GameManager.Instance.IsRuning)
  97. {
  98. DownloadManager.Instance.AddDownloadData(Data);
  99. Debug.Log(" SetData " + updateTime);
  100. }
  101. else
  102. {
  103. AssetBundle ab = AssetBundle.LoadFromFile(Data.localSavePath);
  104. if (ab == null)
  105. {
  106. Debug.Log("Failed to load AssetBundle!");
  107. return;
  108. }
  109. var prefab = ab.LoadAsset<GameObject>(ab.LoadAllAssets<GameObject>()[0].name);
  110. m_ModelObj = Instantiate(prefab, transform);
  111. ab.Unload(false);
  112. gameObject.AddComponent<ManipulationHandler>();
  113. gameObject.AddComponent<BoundingBox>();
  114. //var obj = DownloadManager.Instance.GetAbObj(Util.MD5Encrypt(Data.downloadPath));
  115. //if (obj != null)
  116. //{
  117. // m_ModelObj = Instantiate(obj, transform);
  118. // m_ModelObj.transform.localPosition = Vector3.zero;
  119. // m_ModelObj.gameObject.SetActive(true);
  120. //}
  121. }
  122. }
  123. public override void HideCollider()
  124. {
  125. base.HideCollider();
  126. }
  127. }