using System.Collections.Generic; using UnityEditor; // Следит, чтобы сцена карты мира (WorldMap, от Саши) была в Build Settings -- // иначе переход город -> карта не работает. Срабатывает сам после каждой компиляции. // Стартовая сцена (05.11): 3D-поселение City3D, если оно есть в проекте, иначе 2D-город MVP1. // Выключенный в Build Settings MVP1 (06.11) скрипт не трогает и заново не добавляет. [InitializeOnLoad] public static class SceneListFixer { const string CityScene = "Assets/Scenes/MVP1.unity"; const string WorldScene = "Assets/Scenes/WorldMap.unity"; const string City3DScene = "Assets/Scenes/City3D.unity"; static SceneListFixer() { EditorApplication.delayCall += Ensure; } static void Ensure() { var scenes = new List(EditorBuildSettings.scenes); bool changed = false; string start = AssetDatabase.LoadAssetAtPath(City3DScene) != null ? City3DScene : CityScene; // 2D-город (MVP1) больше не развиваем (06.11): при 3D-поселении его в список не добавляем и не включаем var wanted = new[] { start, WorldScene }; foreach (var path in wanted) { if (AssetDatabase.LoadAssetAtPath(path) == null) continue; if (scenes.Exists(s => s.path == path)) continue; scenes.Add(new EditorBuildSettingsScene(path, true)); changed = true; } // стартовый город должен быть первым (с него стартует игра) int city = scenes.FindIndex(s => s.path == start); if (city > 0) { var c = scenes[city]; scenes.RemoveAt(city); scenes.Insert(0, c); changed = true; } if (changed) { EditorBuildSettings.scenes = scenes.ToArray(); UnityEngine.Debug.Log("[СЦЕНЫ] Build Settings: город + карта мира добавлены"); } } }