Bundle.cs 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. using System;
  2. using UnityEngine;
  3. using UnityEngine.Events;
  4. using System.Collections;
  5. using System.Diagnostics;
  6. using Debug = UnityEngine.Debug;
  7. public class Bundle : Regist
  8. {
  9. #region
  10. public static bool LoadComplete;
  11. public static Bundle Instance;
  12. public static AssetBundle UI;
  13. public static AssetBundle Atlas;
  14. public static AssetBundle Effect;
  15. public static AssetBundle Audio;
  16. public static AssetBundle Scene;
  17. public static AssetBundle Config;
  18. #endregion
  19. public override void RegistImmed()
  20. {
  21. if (RegistFlag)
  22. {
  23. return;
  24. }
  25. else
  26. {
  27. RegistFlag = true;
  28. }
  29. enabled = true;
  30. Instance = this;
  31. LoadAll
  32. (
  33. () => LoadComplete = true
  34. );
  35. }
  36. public static string GetStreamPath()
  37. {
  38. if (Application.isEditor)
  39. // return "file://" + System.Environment.CurrentDirectory.Replace("\\", "/"); // Use the build output folder directly.
  40. return "file://" + Application.streamingAssetsPath + "/Bundle/Windows/";//user local stream
  41. else if (Application.isWebPlayer)
  42. return System.IO.Path.GetDirectoryName(Application.absoluteURL).Replace("\\", "/") + "/StreamingAssets";
  43. else if (Application.platform == RuntimePlatform.IPhonePlayer)
  44. return "file://" + Application.streamingAssetsPath + "/Bundle/IOS/";
  45. else if (Application.isMobilePlatform || Application.isConsolePlatform)
  46. return Application.streamingAssetsPath + "/Bundle/Android/";
  47. else // For standalone player.
  48. return "file://" + Application.streamingAssetsPath;
  49. //return "file://" + Application.streamingAssetsPath + "/Bundle/Windows/";
  50. }
  51. public void LoadAll(UnityAction callback)
  52. {
  53. StartCoroutine(ILoadAll(callback));
  54. }
  55. public static IEnumerator ILoadAll(UnityAction callback)
  56. {
  57. yield return LoadConfig();
  58. yield return LoadUI();
  59. if (!Logo.LogoComplete)
  60. {
  61. ManaReso.AddAsyncLoad("Canvas",1,Folder.UI,ObjType.Canvas);
  62. ManaReso.AddAsyncLoad("GroupA", 1, Folder.UI, ObjType.GroupA, true);
  63. ManaReso.AddAsyncLoad("GroupB", 1, Folder.UI, ObjType.GroupB, true);
  64. ManaReso.AddAsyncLoad("GroupC", 1, Folder.UI, ObjType.GroupC, true);
  65. ManaReso.AddAsyncLoad("GroupD", 1, Folder.UI, ObjType.GroupD, true);
  66. ManaReso.AddAsyncLoad("EventSystem", 1, Folder.UI, ObjType.EventSystem);
  67. ManaReso.AddAsyncLoad("MainCamera", 1, Folder.UI, ObjType.MainCamera);
  68. ManaReso.AddAsyncLoad("SkillItem", 31, Folder.UI, ObjType.SkillItem, true);
  69. ManaReso.AddAsyncLoad("SignItem", 21, Folder.UI, ObjType.SignItem, true);
  70. ManaReso.AddAsyncLoad("FlowerItem", 17, Folder.UI, ObjType.FlowerItem, true);
  71. ManaReso.AddAsyncLoad("AchieveItem", 2, Folder.UI, ObjType.AchieveItem, true);
  72. }
  73. yield return LoadScene();
  74. if (!Logo.LogoComplete)
  75. {
  76. //if (Data.GetPlayerBool("TutorialA") && Data.GetPlayerInt("TutorialIndexA") == 1)
  77. //{
  78. // ManaReso.AddAsyncPlayer("PlayerPink");
  79. // ManaReso.AddAsyncPlayer("PlayerBlond");
  80. // ManaReso.AddAsyncPlayer("PlayerBrown");
  81. //}
  82. //else
  83. //{
  84. // ManaReso.AddAsyncPlayer(Data.GetPlayerString("Player"));
  85. //}
  86. ManaReso.AddAsyncLoad("Flower", 9, Folder.Scene, ObjType.Flower, false, false, null, typeof(Flower));
  87. ManaReso.AddAsyncLoad("Page", 2, Folder.Scene, ObjType.Page);
  88. ManaReso.AddAsyncLoad("Garden", 1, Folder.Scene, ObjType.Garden);
  89. }
  90. yield return LoadAudio();
  91. if (!Logo.LogoComplete)
  92. {
  93. ManaReso.AddAsyncLoad("Music", 1, Folder.Audio, ObjType.Music);
  94. ManaReso.AddAsyncLoad("skill_config", Folder.Config);
  95. ManaReso.AddAsyncLoad("pack_config", Folder.Config);
  96. ManaReso.AddAsyncLoad("ability_config", Folder.Config);
  97. ManaReso.AddAsyncLoad("achieve_config", Folder.Config);
  98. ManaReso.AddAsyncLoad("visit_config", Folder.Config);
  99. ManaReso.AddAsyncLoad("award_config", Folder.Config);
  100. ManaReso.AddAsyncLoad("flower_config", Folder.Config);
  101. ManaReso.AddAsyncLoad("offline_config", Folder.Config);
  102. ManaReso.AddAsyncLoad("signin_config", Folder.Config);
  103. ManaReso.AddAsyncLoad("English", Folder.Config);
  104. ManaReso.AddAsyncLoad("ChineseSimplified", Folder.Config);
  105. ManaReso.AddAsyncLoad("ChineseTraditional", Folder.Config);
  106. ManaReso.AddAsyncLoad("BtnClip", Folder.Audio);
  107. ManaReso.AddAsyncLoad("SkillClip", Folder.Audio);
  108. ManaReso.AddAsyncLoad("ErrorClip", Folder.Audio);
  109. ManaReso.AddAsyncLoad("DropClip", Folder.Audio);
  110. ManaReso.AddAsyncLoad("CloseClip", Folder.Audio);
  111. ManaReso.AddAsyncLoad("FlowerClip", Folder.Audio);
  112. ManaReso.AddAsyncLoad("BubbleClip", Folder.Audio);
  113. ManaReso.AddAsyncLoad("CurrentClip", Folder.Audio);
  114. ManaReso.AddAsyncLoad("MiniEndClip", Folder.Audio);
  115. ManaReso.AddAsyncLoad("stand_tex", Folder.Config);
  116. ManaReso.AddAsyncLoad("stand_ske", Folder.Config);
  117. ManaReso.AddAsyncLoad("stand_texture", Folder.Scene);
  118. ManaReso.AddAsyncLoad("Closet_tex", Folder.Config);
  119. ManaReso.AddAsyncLoad("Closet_ske", Folder.Config);
  120. ManaReso.AddAsyncLoad("Closet_texture", Folder.Scene);
  121. ManaReso.AddAsyncLoad("4大技能1", Folder.UI);
  122. ManaReso.AddAsyncLoad("4大技能2", Folder.UI);
  123. ManaReso.AddAsyncLoad("4大技能3", Folder.UI);
  124. ManaReso.AddAsyncLoad("4大技能4", Folder.UI);
  125. ManaReso.AddAsyncLoad("4大技能1副", Folder.UI);
  126. ManaReso.AddAsyncLoad("4大技能2副", Folder.UI);
  127. ManaReso.AddAsyncLoad("4大技能3副", Folder.UI);
  128. ManaReso.AddAsyncLoad("4大技能4副", Folder.UI);
  129. ManaReso.AddAsyncLoad("红-公园", Folder.UI);
  130. ManaReso.AddAsyncLoad("红-彩虹", Folder.UI);
  131. ManaReso.AddAsyncLoad("红-樱花树", Folder.UI);
  132. ManaReso.AddAsyncLoad("红-灌木", Folder.UI);
  133. ManaReso.AddAsyncLoad("红-黄莺鸟", Folder.UI);
  134. ManaReso.AddAsyncLoad("绿-免费金币", Folder.UI);
  135. ManaReso.AddAsyncLoad("绿-繁花似锦", Folder.UI);
  136. ManaReso.AddAsyncLoad("绿-金币包1", Folder.UI);
  137. ManaReso.AddAsyncLoad("绿-金币包2", Folder.UI);
  138. ManaReso.AddAsyncLoad("绿-金币包3", Folder.UI);
  139. ManaReso.AddAsyncLoad("蓝-中级包", Folder.UI);
  140. ManaReso.AddAsyncLoad("蓝-免费钻", Folder.UI);
  141. ManaReso.AddAsyncLoad("蓝-高级包", Folder.UI);
  142. ManaReso.AddAsyncLoad("蓝-初级包", Folder.UI);
  143. ManaReso.AddAsyncLoad("蓝-中量钻石", Folder.UI);
  144. ManaReso.AddAsyncLoad("蓝-大量钻石", Folder.UI);
  145. ManaReso.AddAsyncLoad("蓝-小量钻石", Folder.UI);
  146. ManaReso.AddAsyncLoad("黄-白蝴蝶", Folder.UI);
  147. ManaReso.AddAsyncLoad("黄-紫蝴蝶", Folder.UI);
  148. ManaReso.AddAsyncLoad("黄-红蝴蝶", Folder.UI);
  149. ManaReso.AddAsyncLoad("黄-蓝蝴蝶", Folder.UI);
  150. ManaReso.AddAsyncLoad("黄-黄蝴蝶", Folder.UI);
  151. ManaReso.AddAsyncLoad("黄-白色蜜蜂", Folder.UI);
  152. ManaReso.AddAsyncLoad("黄-紫色蜜蜂", Folder.UI);
  153. ManaReso.AddAsyncLoad("黄-红色蜜蜂", Folder.UI);
  154. ManaReso.AddAsyncLoad("黄-蓝色蜜蜂", Folder.UI);
  155. ManaReso.AddAsyncLoad("黄-黄色蜜蜂", Folder.UI);
  156. for (int i = 1; i < 28; i++)
  157. {
  158. ManaReso.AddAsyncLoad("Flower" + i, Folder.Scene);
  159. }
  160. }
  161. yield return LoadAtlas();
  162. yield return LoadEffect();
  163. if (callback != null)
  164. {
  165. callback.Invoke();
  166. }
  167. }
  168. public static IEnumerator LoadUI()
  169. {
  170. WWW www = new WWW(GetStreamPath() + "ui");
  171. yield return www;
  172. if (string.IsNullOrEmpty(www.error))
  173. {
  174. UI = www.assetBundle;
  175. }
  176. else
  177. {
  178. Debug.Log(www.error);
  179. }
  180. }
  181. public static IEnumerator LoadAtlas()
  182. {
  183. WWW www = new WWW(GetStreamPath() + "atlas");
  184. yield return www;
  185. if (string.IsNullOrEmpty(www.error))
  186. {
  187. Atlas = www.assetBundle;
  188. }
  189. else
  190. {
  191. Debug.Log(www.error);
  192. }
  193. }
  194. public static IEnumerator LoadAudio()
  195. {
  196. WWW www = new WWW(GetStreamPath() + "audio");
  197. yield return www;
  198. if (string.IsNullOrEmpty(www.error))
  199. {
  200. Audio = www.assetBundle;
  201. }
  202. else
  203. {
  204. Debug.Log(www.error);
  205. }
  206. }
  207. public static IEnumerator LoadConfig()
  208. {
  209. WWW www = new WWW(GetStreamPath() + "config");
  210. yield return www;
  211. if (string.IsNullOrEmpty(www.error))
  212. {
  213. Config = www.assetBundle;
  214. }
  215. else
  216. {
  217. Debug.Log(www.error);
  218. }
  219. }
  220. public static IEnumerator LoadEffect()
  221. {
  222. WWW www = new WWW(GetStreamPath() + "effect");
  223. yield return www;
  224. if (string.IsNullOrEmpty(www.error))
  225. {
  226. Effect = www.assetBundle;
  227. }
  228. else
  229. {
  230. Debug.Log(www.error);
  231. }
  232. }
  233. public static IEnumerator LoadScene()
  234. {
  235. WWW www = new WWW(GetStreamPath() + "scene");
  236. yield return www;
  237. if (string.IsNullOrEmpty(www.error))
  238. {
  239. Scene = www.assetBundle;
  240. }
  241. else
  242. {
  243. Debug.Log(www.error);
  244. }
  245. }
  246. }