public static IEnumerator UnLoadUnused() { // if (ResManager.Instance.pattern == ResManager.Pattern.AssetBundle) // { // if (m_AssetBundleManifest != null) // { // var listloading = new Dictionary<string, LoadedAssetBundle>(); // foreach (LoadedAssetBundle ab in Instance.loadedAssetBundles.Values) // { // if (ab.loaded)//caohanzhi 防异步加载时候还没完成就被清楚,导致内存的ab没释放 // { //#if UNITY_EDITOR // Debug.LogError("UnLoadUnused " + ab.assetbundlename +" ref = " + ab.m_ReferencedCount); // m_instance.watches.Remove(ab); //#endif // string []scenepaths = ab.m_AssetBundle.GetAllScenePaths(); // foreach (var k in scenepaths) // { // Debug.Log(k); // } // ab.UnLoad(true); // } // else // { //#if UNITY_EDITOR // Debug.LogError("这个意料之外的 " + ab.assetbundlename + " ref = " + ab.m_ReferencedCount); // listloading.Add(ab.assetbundlename, ab); //#endif // } // } // Instance.loadedAssetBundles = listloading; // if (!string.IsNullOrEmpty(AssetScene.Current.assetBundleName)) // { // ABsManager.Unload(AssetScene.Current.assetBundleName); // } // } // objMap.Clear(); // yield return null; AssetBundleUser.GetInstance().Clear(); yield return(null); Resources.UnloadUnusedAssets(); yield return(null); //} }
public GameObject Generate() { string assetName = string.Format("{0}", AssetBundleAssetRecord.GetAssetName(path)); UnityEngine.Object obj = m_instance.loadedAssetBundles[assetBundleName].GetRes(assetName); if (obj != null) { GameObject go = GameObject.Instantiate(obj) as GameObject; AssetBundleUser.GetInstance().SetBundle(assetBundleName, go); return(go); } return(null); }
public static void AddABUser(Object o, string path, ObjectState.State state = ObjectState.State.Normal) { if (ResManager.Instance.m_pattern == ResManager.Pattern.AssetBundle) { string assetBundleName = ConvertResToABPath(path); if (!string.IsNullOrEmpty(assetBundleName)) { AssetBundleUser.GetInstance().SetBundle(assetBundleName, o, state); } else { Debug.LogError("error add ab user = " + path); } } }
public static AssetBundleUser GetInstance() { if (instance != null) { return(instance); } else { GameObject go = new GameObject("assetbundle"); DontDestroyOnLoad(go); instance = go.AddComponent <AssetBundleUser>(); instance.list.AddRange(lastSceneRemains); lastSceneRemains.Clear(); return(instance); } }