Подробные изменения: - Добавлены сцены Bootstrap, MainMenu и Game с текущей вертикальной 9:16 структурой проекта. - Добавлены runtime-скрипты gameplay-архитектуры: DI через Extenject, спавнер платформ, прогрессия этапов, one-way платформы, игрок, камера и оборудование JumpPad. - Добавлены ScriptableObject-этапы сложности, weighted-настройки платформ, оборудования, противников и collectibles. - Добавлены UI Toolkit ресурсы главного меню, preview-материалы, шрифты, спрайты, анимации и игровые prefab-ассеты. - Перенесена и оформлена новая COM-система для работы с аппаратными портами и StreamingAssets. - Обновлены проектные гайды, AGENTS.md, правила Git/Git LFS, .gitignore, Unity Packages и ProjectSettings. - Удалён локальный skill start-required-mcp-servers из репозитория.
53 lines
1.7 KiB
C#
53 lines
1.7 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|