using UnityEngine; using UnityEngine.SceneManagement; // Переходы город <-> карта мира public static class SceneNavigator { // Город -- 3D-поселение (решение 05.11). Старый 2D-город (MVP1) исключён из сборки; если его открыть в редакторе, // с карты мира вернёт в него же (lastCityScene) public const string CitySceneName = "City3D"; public const string OldCitySceneName = "MVP1"; public const string WorldMapSceneName = "WorldMap"; // Из какого города ушли на карту мира: 2D (MVP1) или 3D (City3D) -- туда и возвращаемся (05.11) static string lastCityScene = CitySceneName; public static void OpenWorldMap() { if (!Application.CanStreamedLevelBeLoaded(WorldMapSceneName)) { Debug.LogError($"[КАРТА] Сцена '{WorldMapSceneName}' не добавлена в Build Settings. " + "Выйди из Play Mode и выполни Tools -> Build World Map Scene."); return; } // Сохраняемся до ухода из города: постройки на карте мира не существуют, // и SaveManager берёт их из последнего сохранения if (SaveManager.Instance != null) SaveManager.Instance.SaveGame(); lastCityScene = SceneManager.GetActiveScene().name; SceneManager.LoadScene(WorldMapSceneName); } public static void ReturnToCity() { if (SaveManager.Instance != null) SaveManager.Instance.SaveGame(); string city = Application.CanStreamedLevelBeLoaded(lastCityScene) ? lastCityScene : Application.CanStreamedLevelBeLoaded(CitySceneName) ? CitySceneName : OldCitySceneName; SceneManager.LoadScene(city); } }