using System.Collections; using System.IO; using UnityEngine; using UnityEngine.SceneManagement; namespace DanroJump.Bootstrap { [DefaultExecutionOrder(-10000)] public sealed class BootstrapEntryPoint : MonoBehaviour { [SerializeField] private string mainMenuSceneName = "MainMenu"; private IEnumerator Start() { if (string.IsNullOrWhiteSpace(mainMenuSceneName)) { Debug.LogError("[BootstrapEntryPoint] Main menu scene name is empty.", this); yield break; } if (!SceneExistsInBuildSettings(mainMenuSceneName)) { Debug.LogError($"[BootstrapEntryPoint] Scene '{mainMenuSceneName}' is not registered in Build Settings.", this); yield break; } AsyncOperation operation = SceneManager.LoadSceneAsync(mainMenuSceneName, LoadSceneMode.Single); if (operation == null) { Debug.LogError($"[BootstrapEntryPoint] Failed to start loading scene '{mainMenuSceneName}'.", this); yield break; } while (!operation.isDone) yield return null; } private static bool SceneExistsInBuildSettings(string sceneName) { for (int i = 0; i < SceneManager.sceneCountInBuildSettings; i++) { string scenePath = SceneUtility.GetScenePathByBuildIndex(i); string buildSceneName = Path.GetFileNameWithoutExtension(scenePath); if (buildSceneName == sceneName) return true; } return false; } } }