using FishNet.Utility.Extension; using UnityEngine.SceneManagement; #if UNITY_6000_5_OR_NEWER using SceneHandle = System.UInt64; #else using SceneHandle = System.Int32; #endif namespace FishNet.Managing.Scened { public struct UnloadedScene { public readonly string Name; public readonly SceneHandle Handle; public UnloadedScene(Scene s) { Name = s.name; Handle = s.GetRawHandle(); } public UnloadedScene(string name, int handle) { Name = name; Handle = Scenes.ToRawHandle(handle); } /// /// Returns a scene based on handle. /// Result may not be valid as some Unity versions discard of the scene information after unloading. /// /// public Scene GetScene() { int loadedScenes = UnityEngine.SceneManagement.SceneManager.sceneCount; for (int i = 0; i < loadedScenes; i++) { Scene s = UnityEngine.SceneManagement.SceneManager.GetSceneAt(i); if (s.IsValid() && s.GetRawHandle() == Handle) return s; } return default; } } }