6.6 KiB
6.6 KiB
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. Добавление в префаб
- Добавьте компонент
ChangeSceneButtonк объекту с кнопкой - Укажите название сцены в свойстве
SceneName - Настройте дополнительные параметры при необходимости
2. Настройка в редакторе
// Пример настройки
SceneName = "minimal" // Загрузить сцену "minimal"
LoadDelay = 1.5f // Задержка 1.5 секунды
ShowLoadingMessage = true // Показывать сообщения
UseFullPath = false // Автоматически добавлять "scenes/" и ".scene"
3. Доступные сцены
Для просмотра списка доступных сцен используйте метод ListAvailableScenes() в редакторе.
Функциональность
Автоматическая проверка
- Проверяет, что название сцены указано
- Проверяет, что код выполняется на сервере/хосте
- Проверяет существование файла сцены
- Логирует все действия для отладки
Обработка ошибок
- Логирует предупреждения при отсутствии названия сцены
- Проверяет существование файла сцены
- Предотвращает подготовку на клиенте
- Обрабатывает исключения
Задержка подготовки
- Поддерживает асинхронную подготовку с задержкой
- Полезно для анимаций перехода
- Не блокирует основной поток
Примеры использования
Простая подготовка сцены
// Настройка для подготовки сцены "main_menu"
SceneName = "main_menu"
LoadDelay = 0.0f
ShowLoadingMessage = true
UseFullPath = false
Подготовка сцены с задержкой
// Настройка для подготовки сцены "game" с задержкой
SceneName = "game"
LoadDelay = 2.0f // 2 секунды задержки
ShowLoadingMessage = true
UseFullPath = false
Использование полного пути
// Настройка с полным путем
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<SceneFile>() - Перезапуск игры с новой сценой
- Динамическая загрузка префабов вместо смены сцены
Совместимость
- Работает с любыми сценами в формате
.scene - Совместим с системой взаимодействий s&box
- Поддерживает асинхронные операции
- Безопасен для использования в мультиплеере
- Проверяет существование файлов сцены