/// <summary> /// Stop all loading tasks, and release all references.(immediately) /// </summary> public AssetManagementTool Shutdown(bool unloadUnusedAssets = false) { ActionSequence.Clear(); if (Working) { if (m_WorkingCoroutine != null) { m_WorkingCoroutine.StopCoroutine(); } Working = false; } m_WorkingCoroutine = null; if (m_LoadingTasks != null) { m_LoadingTasks.UnspawnLoadingTasks(); m_LoadingTasks = null; } while (m_CachedLoadingTasks.Count > 0) { var list = m_CachedLoadingTasks.Dequeue(); if (list != null) { list.UnspawnLoadingTasks(); } } m_CachedLoadingCallbacks.Clear(); foreach (var kvp in m_LoadedAssets) { kvp.Value.Release(true); AssetRefer.Unspawn(kvp.Value); } foreach (var kvp in m_LoadedAssetBundles) { kvp.Value.Release(true); AssetBundleRefer.Unspawn(kvp.Value); } m_LoadedAssets.Clear(); m_LoadedAssetBundles.Clear(); if (unloadUnusedAssets) { Resources.UnloadUnusedAssets(); } return(this); }