using UnityEngine; using UnityEngine.Events; using System.Collections; using System.Diagnostics; using Debug = UnityEngine.Debug; public class Bundle : MonoBehaviour { #region public static bool LoadComplete; public static Bundle Instance; public static AssetBundle UI; public static AssetBundle Skill; public static AssetBundle Config; public static AssetBundle Object; public static AssetBundle Shader; public static AssetBundle Garden; public static AssetBundle Character; public static AssetBundle TempUI; public static AssetBundle TempSkill; public static AssetBundle TempConfig; public static AssetBundle TempObject; public static AssetBundle TempShader; public static AssetBundle TempGarden; public static AssetBundle TempCharacter; #endregion public void Awake() { Instance = this; DontDestroyOnLoad(gameObject); LoadAll ( () => LoadComplete = true ); } public static string GetStreamPath() { if (Application.isEditor) // return "file://" + System.Environment.CurrentDirectory.Replace("\\", "/"); // Use the build output folder directly. return "file://" + Application.streamingAssetsPath + "/Bundle/Windows/";//user local stream else if (Application.isWebPlayer) return System.IO.Path.GetDirectoryName(Application.absoluteURL).Replace("\\", "/") + "/StreamingAssets"; else if (Application.platform == RuntimePlatform.IPhonePlayer) return "file://" + Application.streamingAssetsPath + "/Bundle/IOS/"; else if (Application.isMobilePlatform || Application.isConsolePlatform) return Application.streamingAssetsPath + "/Bundle/Android/"; else // For standalone player. return "file://" + Application.streamingAssetsPath; //return "file://" + Application.streamingAssetsPath + "/Bundle/Windows/"; } public void LoadAll(UnityAction callback) { StartCoroutine(ILoadAll(callback)); } public static IEnumerator ILoadAll(UnityAction callback) { yield return LoadUI(); yield return LoadSkill(); yield return LoadConfig(); yield return LoadObject(); yield return LoadShader(); yield return LoadGarden(); yield return LoadCharacter(); if (callback != null) { callback.Invoke(); } } public static IEnumerator LoadUI() { WWW www = new WWW(GetStreamPath() + "ui"); yield return www; if (string.IsNullOrEmpty(www.error)) { UI = www.assetBundle; } else { Debug.Log(www.error); } www = new WWW(GetStreamPath() + "uitemp"); yield return www; if (string.IsNullOrEmpty(www.error)) { TempUI = www.assetBundle; } } public static IEnumerator LoadSkill() { WWW www = new WWW(GetStreamPath() + "skill"); yield return www; if (string.IsNullOrEmpty(www.error)) { Skill = www.assetBundle; } else { Debug.Log(www.error); } www = new WWW(GetStreamPath() + "skilltemp"); yield return www; if (string.IsNullOrEmpty(www.error)) { TempSkill = www.assetBundle; } } public static IEnumerator LoadConfig() { WWW www = new WWW(GetStreamPath() + "config"); yield return www; if (string.IsNullOrEmpty(www.error)) { Config = www.assetBundle; } else { Debug.Log(www.error); } www = new WWW(GetStreamPath() + "configtemp"); yield return www; if (string.IsNullOrEmpty(www.error)) { TempConfig = www.assetBundle; } } public static IEnumerator LoadObject() { WWW www = new WWW(GetStreamPath() + "object"); yield return www; if (string.IsNullOrEmpty(www.error)) { Object = www.assetBundle; } else { Debug.Log(www.error); } www = new WWW(GetStreamPath() + "objecttemp"); yield return www; if (string.IsNullOrEmpty(www.error)) { TempObject = www.assetBundle; } } public static IEnumerator LoadShader() { WWW www = new WWW(GetStreamPath() + "shader"); yield return www; if (string.IsNullOrEmpty(www.error)) { Shader = www.assetBundle; } else { Debug.Log(www.error); } www = new WWW(GetStreamPath() + "shadertemp"); yield return www; if (string.IsNullOrEmpty(www.error)) { TempShader = www.assetBundle; } } public static IEnumerator LoadGarden() { WWW www = new WWW(GetStreamPath() + "garden"); yield return www; if (string.IsNullOrEmpty(www.error)) { Garden = www.assetBundle; } else { Debug.Log(www.error); } www = new WWW(GetStreamPath() + "gardentemp"); yield return www; if (string.IsNullOrEmpty(www.error)) { TempGarden = www.assetBundle; } } public static IEnumerator LoadCharacter() { WWW www = new WWW(GetStreamPath() + "character"); yield return www; if (string.IsNullOrEmpty(www.error)) { Character = www.assetBundle; } else { Debug.Log(www.error); } www = new WWW(GetStreamPath() + "charactertemp"); yield return www; if (string.IsNullOrEmpty(www.error)) { TempCharacter = www.assetBundle; } } }