# ChangeSceneButton Компонент для подготовки к смене сцены при нажатии кнопки. ## Описание `ChangeSceneButton` - это компонент, который подготавливает загрузку другой сцены при нажатии на кнопку взаимодействия. Компонент наследуется от `InteractionButton` и добавляет функциональность проверки и подготовки смены уровня. **Примечание**: В s&box прямая смена сцены во время игры ограничена. Этот компонент подготавливает данные для смены сцены и проверяет их корректность. ## Свойства ### SceneName (string) - **Описание**: Название сцены для загрузки - **По умолчанию**: `""` (пустая строка) - **Обязательное**: Да - **Пример**: `"minimal"`, `"test"`, `"main_menu"` ### LoadDelay (float) - **Описание**: Задержка перед подготовкой сцены в секундах - **По умолчанию**: `0.0f` (без задержки) - **Использование**: Полезно для анимаций перехода или эффектов ### ShowLoadingMessage (bool) - **Описание**: Показывать ли сообщение о подготовке в консоли - **По умолчанию**: `true` - **Использование**: Отладочная информация ### UseFullPath (bool) - **Описание**: Использовать полный путь к сцене - **По умолчанию**: `false` - **Использование**: Если true, SceneName должен содержать полный путь (например, "scenes/minimal.scene") ## Использование ### 1. Добавление в префаб 1. Добавьте компонент `ChangeSceneButton` к объекту с кнопкой 2. Укажите название сцены в свойстве `SceneName` 3. Настройте дополнительные параметры при необходимости ### 2. Настройка в редакторе ```csharp // Пример настройки SceneName = "minimal" // Загрузить сцену "minimal" LoadDelay = 1.5f // Задержка 1.5 секунды ShowLoadingMessage = true // Показывать сообщения UseFullPath = false // Автоматически добавлять "scenes/" и ".scene" ``` ### 3. Доступные сцены Для просмотра списка доступных сцен используйте метод `ListAvailableScenes()` в редакторе. ## Функциональность ### Автоматическая проверка - Проверяет, что название сцены указано - Проверяет, что код выполняется на сервере/хосте - Проверяет существование файла сцены - Логирует все действия для отладки ### Обработка ошибок - Логирует предупреждения при отсутствии названия сцены - Проверяет существование файла сцены - Предотвращает подготовку на клиенте - Обрабатывает исключения ### Задержка подготовки - Поддерживает асинхронную подготовку с задержкой - Полезно для анимаций перехода - Не блокирует основной поток ## Примеры использования ### Простая подготовка сцены ```csharp // Настройка для подготовки сцены "main_menu" SceneName = "main_menu" LoadDelay = 0.0f ShowLoadingMessage = true UseFullPath = false ``` ### Подготовка сцены с задержкой ```csharp // Настройка для подготовки сцены "game" с задержкой SceneName = "game" LoadDelay = 2.0f // 2 секунды задержки ShowLoadingMessage = true UseFullPath = false ``` ### Использование полного пути ```csharp // Настройка с полным путем SceneName = "scenes/custom_level.scene" LoadDelay = 0.0f ShowLoadingMessage = true UseFullPath = true ``` ## Требования ### Сцены - Сцены должны находиться в папке `scenes/` - Формат файлов: `.scene` - Название сцены должно соответствовать имени файла без расширения ### Права доступа - Подготовка сцены возможна только на сервере/хосте - Клиенты не могут инициировать смену сцены ## Отладка ### Логи Компонент выводит подробные логи: - `Info`: Успешная подготовка сцены - `Warning`: Отсутствие названия сцены или попытка подготовки на клиенте - `Error`: Ошибки при проверке файла сцены ### Список сцен Используйте метод `ListAvailableScenes()` для просмотра доступных сцен в консоли. ### Тестирование Используйте метод `TestSceneLoad()` для проверки настроек компонента. ## Ограничения s&box ### Смена сцены - Прямая смена сцены во время игры в s&box ограничена - Обычно требуется перезапуск игры с новой сценой - Компонент подготавливает данные для смены сцены ### Альтернативы - Использование `GameResource.Load()` - Перезапуск игры с новой сценой - Динамическая загрузка префабов вместо смены сцены ## Совместимость - Работает с любыми сценами в формате `.scene` - Совместим с системой взаимодействий s&box - Поддерживает асинхронные операции - Безопасен для использования в мультиплеере - Проверяет существование файлов сцены