using System.Collections.Generic; using System.IO; using TMPro; using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; // Tools -> Build World Map Scene // 1. Создаёт сцену Assets/Scenes/WorldMap.unity: камера, EventSystem, UI карты, WorldMapController. // 2. Ставит MVP1 и WorldMap в Build Settings (иначе SceneManager.LoadScene их не найдёт). // 3. Проверяет, что на кнопке Nav_Battle в городе висит OpenBattleButton. // Можно запускать повторно -- сцена карты пересоздаётся заново. public static class WorldMapSceneBuilder { const string WorldMapScenePath = "Assets/Scenes/WorldMap.unity"; const string CityScenePath = "Assets/Scenes/MVP1.unity"; [MenuItem("Tools/Build World Map Scene")] public static void Build() { if (!EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo()) return; CreateWorldMapScene(); UpdateBuildSettings(); HookUpCityBattleButton(); Debug.Log("[КАРТА] Сцена карты мира создана, кнопка БОЙ в городе подключена. Запускай MVP1 и жми БОЙ."); } // ---------------- СЦЕНА КАРТЫ ---------------- static void CreateWorldMapScene() { var scene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single); var camGO = new GameObject("Main Camera", typeof(Camera), typeof(MapCameraController)); camGO.tag = "MainCamera"; camGO.transform.position = new Vector3(0, 0, -10); Camera cam = camGO.GetComponent(); cam.orthographic = true; cam.orthographicSize = 8f; cam.clearFlags = CameraClearFlags.SolidColor; cam.backgroundColor = new Color(0.12f, 0.16f, 0.12f); new GameObject("EventSystem", typeof(EventSystem), typeof(StandaloneInputModule)); var canvasGO = new GameObject("WorldMap_Canvas", typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster)); canvasGO.GetComponent().renderMode = RenderMode.ScreenSpaceOverlay; CanvasScaler scaler = canvasGO.GetComponent(); scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; scaler.referenceResolution = new Vector2(1920, 1080); scaler.matchWidthOrHeight = 0.5f; RectTransform canvasRect = canvasGO.GetComponent(); var controller = new GameObject("WorldMapController").AddComponent(); controller.mapCamera = camGO.GetComponent(); // ---- Верхняя панель: назад | войско | мой город ---- RectTransform topBar = CreatePanel(canvasRect, "TopBar", new Color(0.08f, 0.08f, 0.1f, 0.85f)); AnchorStretch(topBar, top: true, height: 110); controller.soldiersText = CreateText(topBar, "SoldiersText", "Войска дома: 30", 40); RectTransform back = CreateButton(topBar, "BackButton", "НАЗАД", new Color(0.3f, 0.3f, 0.33f), out _); AnchorSide(back, left: true, new Vector2(220, 80), 20); controller.backButton = back.GetComponent