- Золотой рудник, Кристалл, Терем: цены, уровни Ратуши и компоненты как в 2D - Перенос: нет 3D-города в сохранении, есть 2D -- Ратуша с уровнем и улучшением, здания с уровнями и стройками; секция settlement не меняется - Камера перспективная (City3DCamera.perspective, поле зрения 40 -- ТЕСТ) - Город -- City3D; MVP1 выключена в Build Settings, код и сцена 2D остаются - Меню стройки в два столбца Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
41 lines
1.9 KiB
C#
41 lines
1.9 KiB
C#
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);
|
|
}
|
|
}
|