private IEnumerator UnloadScene() { yield return(_assetManager.Clear()); var count = SceneManager.sceneCount; var sceneList = new List <Scene>(); for (int i = 0; i < count; ++i) { var scene = SceneManager.GetSceneAt(i); sceneList.Add(scene); } foreach (var scene in sceneList) { if (IsSceneUnloadable(scene)) { yield return(SceneManager.UnloadSceneAsync(scene.name)); } } yield return(Resources.UnloadUnusedAssets()); GC.Collect(); _logger.InfoFormat("Server Room is Disposed!"); _state = RoomState.Disposed; }