TemplateModel.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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, null);
  49. Audio.name = "AudioManager";
  50. }
  51. break;
  52. case "GHZ_XXXXXX_230721":
  53. break;
  54. default:
  55. m_ModelObj = Instantiate(prefab, transform);
  56. break;
  57. }
  58. //if (ab.LoadAllAssets<GameObject>()[0].name == "MRVideo")
  59. //m_ModelObj.AddComponent<MovieScreen>();
  60. gameObject.AddComponent<ManipulationHandler>();
  61. gameObject.AddComponent<BoundingBox>();
  62. yield return new WaitForSeconds(0.3f);
  63. ab.Unload(false);
  64. HideCollider();
  65. }
  66. //var obj = DownloadManager.Instance.GetAbObj(Util.MD5Encrypt(Data.downloadPath));
  67. //if (obj != null)
  68. //{
  69. // m_ModelObj = Instantiate(obj, transform);
  70. // m_ModelObj.transform.localPosition = Vector3.zero;
  71. // m_ModelObj.gameObject.SetActive(true);
  72. //}
  73. }
  74. }
  75. public void LoadModel(AssetBundle ab)
  76. {
  77. // StartCoroutine(LoadABModel(ab));
  78. LoadABModel(ab);
  79. }
  80. private void LoadABModel(AssetBundle ab)
  81. {
  82. if (ab == null)
  83. {
  84. Debug.Log("Failed to load AssetBundle!");
  85. }
  86. else
  87. {
  88. var prefab = ab.LoadAsset<GameObject>(ab.LoadAllAssets<GameObject>()[0].name);
  89. switch (prefab.name)
  90. {
  91. case "GHZ_OOBE_230721":
  92. GameObject obj = Resources.Load<GameObject>("GongYe");
  93. if (obj == null)
  94. {
  95. Debug.LogError(" GHZ_OOBE_230721 物体加载失败,请查看是否导入相关Packages ");
  96. obj = new GameObject();
  97. }
  98. m_ModelObj = GameObject.Instantiate(obj, transform);
  99. m_ModelObj.name = "GongYe";
  100. if (GameObject.Find("AudioManager") == null)
  101. {
  102. GameObject audio = Resources.Load<GameObject>("AudioManager");
  103. if (audio == null)
  104. {
  105. Debug.LogError(" GHZ_OOBE_230721 Packages内AudioManager组件丢失");
  106. audio = new GameObject();
  107. }
  108. GameObject Audio = GameObject.Instantiate(audio, null);
  109. Audio.name = "AudioManager";
  110. }
  111. break;
  112. case "GHZ_XXXXXX_230721":
  113. break;
  114. default:
  115. m_ModelObj = Instantiate(prefab, transform);
  116. break;
  117. }
  118. //if (ab.LoadAllAssets<GameObject>()[0].name == "MRVideo")
  119. //m_ModelObj.AddComponent<MovieScreen>();
  120. gameObject.AddComponent<ManipulationHandler>();
  121. gameObject.AddComponent<BoundingBox>();
  122. // yield return new WaitForSeconds(0.3f);
  123. ab.Unload(false);
  124. HideCollider();
  125. }
  126. }
  127. protected override void OnAwake()
  128. {
  129. base.OnAwake();
  130. }
  131. public override void SetData(MaterialObjValue value, int updateTime)
  132. {
  133. base.SetData(value, updateTime);
  134. //if (gameObject.GetComponent<Collider>() != null)
  135. //{
  136. // Destroy(gameObject.GetComponent<Collider>());
  137. //}
  138. //下载列表中加入数据
  139. if (!GameManager.Instance.IsRuning)
  140. {
  141. DownloadManager.Instance.AddDownloadData(Data);
  142. Debug.Log(" SetData " + updateTime);
  143. }
  144. else
  145. {
  146. AssetBundle ab = AssetBundle.LoadFromFile(Data.localSavePath);
  147. if (ab == null)
  148. {
  149. Debug.Log("Failed to load AssetBundle!");
  150. return;
  151. }
  152. var prefab = ab.LoadAsset<GameObject>(ab.LoadAllAssets<GameObject>()[0].name);
  153. m_ModelObj = Instantiate(prefab, transform);
  154. ab.Unload(false);
  155. gameObject.AddComponent<ManipulationHandler>();
  156. gameObject.AddComponent<BoundingBox>();
  157. //var obj = DownloadManager.Instance.GetAbObj(Util.MD5Encrypt(Data.downloadPath));
  158. //if (obj != null)
  159. //{
  160. // m_ModelObj = Instantiate(obj, transform);
  161. // m_ModelObj.transform.localPosition = Vector3.zero;
  162. // m_ModelObj.gameObject.SetActive(true);
  163. //}
  164. }
  165. }
  166. public override void HideCollider()
  167. {
  168. base.HideCollider();
  169. }
  170. }