ModelItem.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using UnityEngine;
  5. public enum ModelType
  6. {
  7. Image,
  8. Video,
  9. ABModel,
  10. Text
  11. }
  12. public class ModelItem
  13. {
  14. //模型所在组合素材内
  15. public GameObject modelList;
  16. public GameObject prefabModel;
  17. private GameObject _model;
  18. //模型数据
  19. public GameObject Model
  20. {
  21. get {
  22. if(_model==null)
  23. {
  24. _model = new GameObject(name);
  25. _model.transform.parent = modelList.transform;
  26. // _model.transform.localPosition = getInfoPos();
  27. // _model.transform.localEulerAngles = getInfoEul();
  28. Debug.Log(" ModelName>>>> " + name + " Type " + type);
  29. }
  30. return _model; }
  31. }
  32. public void init()
  33. {
  34. Debug.LogError("ModelItem Init");
  35. // if (modelType != ModelType.Video)
  36. LoadManager.Instance.load(this, (float f) =>
  37. {
  38. //显示加载
  39. }, (GameObject obj) =>
  40. {
  41. _model = prefabModel;
  42. obj.name ="加载出来的模型-----"+ obj.name;
  43. // obj.transform.parent = _model.transform;
  44. // obj.transform.localPosition = getInfoPos();
  45. // obj.transform.localEulerAngles = getInfoEul();
  46. });
  47. // else
  48. // SetData(null);
  49. }
  50. //模型地址
  51. public string url;
  52. //模型类型
  53. public ModelType modelType;
  54. ////模型原始信息
  55. //public string info;
  56. //模型版本
  57. public string Version { get; set; }
  58. Vector3 getInfoPos()
  59. {
  60. Debug.Log("获取modelItem坐标==》"+prefabModel.name+ objectTransform.nowPos);
  61. //return Vector3.zero;
  62. if (objectTransform.nowPos == Vector3.zero&& prefabModel.transform.localPosition!=Vector3.zero)
  63. return objectTransform.startPos;
  64. else
  65. return objectTransform.nowPos;
  66. }
  67. Vector3 getInfoEul()
  68. {
  69. if (objectTransform.nowRot == Vector3.zero && prefabModel.transform.localEulerAngles != Vector3.zero)
  70. return objectTransform.startRot;
  71. else
  72. return objectTransform.nowRot;
  73. // return Vector3.zero;
  74. }
  75. Vector3 getInfoScale()
  76. {
  77. if (objectTransform.nowScale == Vector3.zero)
  78. return objectTransform.startScale;
  79. else
  80. return objectTransform.nowScale;
  81. }
  82. //模型id
  83. public string uid { get; set; }
  84. //模型name
  85. public string name { get; set; }
  86. /// <summary>
  87. /// 模型类型
  88. /// </summary>
  89. public int type { get; set; }
  90. /// <summary>
  91. /// 文本内容
  92. /// </summary>
  93. public string textContent { get; set; }
  94. /// <summary>
  95. /// 文本框背景
  96. /// </summary>
  97. public string TextBJ { get; set; }
  98. public string textPosition { get; set; }
  99. /// <summary>
  100. /// 下载地址
  101. /// </summary>
  102. public string DownloadPath { get; set; }
  103. /// <summary>
  104. /// 本地保存地址
  105. /// </summary>
  106. public string localSavePath { get; set; }
  107. /// <summary>
  108. /// 坐标
  109. /// </summary>
  110. public ObjectTransform objectTransform { get; set; }
  111. public void init(GameObject modelList)
  112. {
  113. switch (type)
  114. {
  115. case 1: // 图片
  116. modelType = ModelType.Image;
  117. break;
  118. case 2: // 视频
  119. modelType = ModelType.Video;
  120. break;
  121. case 3: // 模型
  122. modelType = ModelType.ABModel;
  123. break;
  124. case 4: // 文字
  125. modelType = ModelType.Text;
  126. break;
  127. default:
  128. Debug.LogError(name + " 素材结构类型异常!!!");
  129. break;
  130. }
  131. url = DownloadPath;
  132. this.modelList = modelList;
  133. if (Version == null)
  134. Version = Application.version.ToString();
  135. // if (Model != null)
  136. // Debug.Log(" 添加模型 " + name);
  137. }
  138. public void SetData(byte[] data)
  139. {
  140. if(data ==null && modelType!= ModelType.Video)
  141. {
  142. Debug.LogError(name + " 未下载完成 !!!!!");
  143. }
  144. switch (modelType)
  145. {
  146. case ModelType.Image:
  147. Texture2D texture = new Texture2D(1, 1);
  148. texture.LoadImage(data);
  149. Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.one * 0.5f);
  150. prefabModel.GetComponent<TemplateImage>().M_Image.sprite = sprite;
  151. break;
  152. case ModelType.Video:
  153. Debug.Log(" DownloadPath " + DownloadPath);
  154. // prefabModel.GetComponent<TemplateVideo>().SetData(HttpAction.baseurvideo + DownloadPath);
  155. prefabModel.GetComponent<TemplateVideo>().SetData(Application.persistentDataPath+"/Material/"+Path.GetFileName(DownloadPath));
  156. break;
  157. case ModelType.ABModel:
  158. AssetBundle assetBundle = AssetBundle.LoadFromMemory(data);
  159. Debug.Log(data.Length);
  160. prefabModel.GetComponent<TemplateModel>().LoadModel(assetBundle);
  161. break;
  162. case ModelType.Text:
  163. prefabModel.GetComponent<TemplateText>().SetData(textContent, TextBJ);
  164. break;
  165. default:
  166. break;
  167. }
  168. }
  169. public void initModelObj()
  170. {
  171. if (getInfoPos() != Vector3.zero)
  172. {
  173. prefabModel.transform.localPosition = getInfoPos();
  174. }
  175. if (getInfoEul() != Vector3.zero)
  176. {
  177. prefabModel.transform.localEulerAngles = getInfoPos();
  178. }
  179. // prefabModel.transform.localPosition = getInfoPos();
  180. // prefabModel.transform.localEulerAngles = getInfoEul();
  181. }
  182. }