public virtual void Dispose() { UnloadBundle(); var e = deps.GetEnumerator(); while (e.MoveNext()) { AssetBundleInfo dep = e.Current; if (dep.depChildren != null) { dep.depChildren.Remove(this.bundleName); } dep.Release(); } HashSetPool <AssetBundleInfo> .Release(deps); deps = null; ListPool <string> .Release(depChildren); depChildren = null; ListPool <WeakReference> .Release(references); references = null; if (onUnloaded != null) { onUnloaded(this); } }