Bundle.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  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. if (!Logo.LogoComplete)
  59. {
  60. ManaReso.AddAsyncLoad("ability_config", Folder.Config);
  61. ManaReso.AddAsyncLoad("achieve_config", Folder.Config);
  62. ManaReso.AddAsyncLoad("award_config", Folder.Config);
  63. ManaReso.AddAsyncLoad("flower_config", Folder.Config);
  64. ManaReso.AddAsyncLoad("offline_config", Folder.Config);
  65. ManaReso.AddAsyncLoad("pack_config", Folder.Config);
  66. ManaReso.AddAsyncLoad("signin_config", Folder.Config);
  67. ManaReso.AddAsyncLoad("skill_config", Folder.Config);
  68. ManaReso.AddAsyncLoad("English", Folder.Config);
  69. ManaReso.AddAsyncLoad("ChineseSimplified", Folder.Config);
  70. ManaReso.AddAsyncLoad("ChineseTraditional", Folder.Config);
  71. ManaReso.AddAsyncLoad("stand_ske", Folder.Config);
  72. ManaReso.AddAsyncLoad("Closet_ske", Folder.Config);
  73. ManaReso.AddAsyncLoad("stand_tex", Folder.Config);
  74. ManaReso.AddAsyncLoad("Closet_tex", Folder.Config);
  75. }
  76. yield return LoadUI();
  77. if (!Logo.LogoComplete)
  78. {
  79. ManaReso.AddAsyncLoad<ObjRoot>("EventSystem", 1, Folder.UI, ObjType.EventSystem);
  80. ManaReso.AddAsyncLoad<ObjRoot>("MainCamera", 1, Folder.UI, ObjType.MainCamera);
  81. ManaReso.AddAsyncLoad<ObjRoot>("Canvas", 1, Folder.UI, ObjType.Canvas);
  82. }
  83. yield return LoadScene();
  84. if (!Logo.LogoComplete)
  85. {
  86. ManaReso.AddAsyncLoad("stand_texture", Folder.Scene);
  87. ManaReso.AddAsyncLoad("Closet_texture", Folder.Scene);
  88. if (Data.GetPlayerBool("TutorialA") && Data.GetPlayerInt("TutorialIndexA") == 1)
  89. {
  90. ManaReso.AddAsyncPlayer("PlayerPink");
  91. ManaReso.AddAsyncPlayer("PlayerBlond");
  92. ManaReso.AddAsyncPlayer("PlayerBrown");
  93. }
  94. else
  95. {
  96. ManaReso.AddAsyncPlayer(Data.GetPlayerString("Player"));
  97. }
  98. ManaReso.AddAsyncLoad<Flower>("Flower", 9, Folder.Scene, ObjType.Flower);
  99. ManaReso.AddAsyncLoad<ObjRoot>("Page", 2, Folder.Scene, ObjType.Page);
  100. ManaReso.AddAsyncLoad<ObjRoot>("Garden", 1, Folder.Scene, ObjType.Garden);
  101. }
  102. yield return LoadAudio();
  103. if (!Logo.LogoComplete)
  104. {
  105. ManaReso.AddAsyncLoad<ObjRoot>("Music", 1, Folder.Audio, ObjType.Music);
  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. }
  116. yield return LoadAtlas();
  117. yield return LoadEffect();
  118. if (callback != null)
  119. {
  120. callback.Invoke();
  121. }
  122. }
  123. public static IEnumerator LoadUI()
  124. {
  125. WWW www = new WWW(GetStreamPath() + "ui");
  126. yield return www;
  127. if (string.IsNullOrEmpty(www.error))
  128. {
  129. UI = www.assetBundle;
  130. }
  131. else
  132. {
  133. Debug.Log(www.error);
  134. }
  135. }
  136. public static IEnumerator LoadAtlas()
  137. {
  138. WWW www = new WWW(GetStreamPath() + "atlas");
  139. yield return www;
  140. if (string.IsNullOrEmpty(www.error))
  141. {
  142. Atlas = www.assetBundle;
  143. }
  144. else
  145. {
  146. Debug.Log(www.error);
  147. }
  148. }
  149. public static IEnumerator LoadAudio()
  150. {
  151. WWW www = new WWW(GetStreamPath() + "audio");
  152. yield return www;
  153. if (string.IsNullOrEmpty(www.error))
  154. {
  155. Audio = www.assetBundle;
  156. }
  157. else
  158. {
  159. Debug.Log(www.error);
  160. }
  161. }
  162. public static IEnumerator LoadConfig()
  163. {
  164. WWW www = new WWW(GetStreamPath() + "config");
  165. yield return www;
  166. if (string.IsNullOrEmpty(www.error))
  167. {
  168. Config = www.assetBundle;
  169. }
  170. else
  171. {
  172. Debug.Log(www.error);
  173. }
  174. }
  175. public static IEnumerator LoadEffect()
  176. {
  177. WWW www = new WWW(GetStreamPath() + "effect");
  178. yield return www;
  179. if (string.IsNullOrEmpty(www.error))
  180. {
  181. Effect = www.assetBundle;
  182. }
  183. else
  184. {
  185. Debug.Log(www.error);
  186. }
  187. }
  188. public static IEnumerator LoadScene()
  189. {
  190. WWW www = new WWW(GetStreamPath() + "scene");
  191. yield return www;
  192. if (string.IsNullOrEmpty(www.error))
  193. {
  194. Scene = www.assetBundle;
  195. }
  196. else
  197. {
  198. Debug.Log(www.error);
  199. }
  200. }
  201. }