sasalka/Code/UI/Buttons/README_ChangeSceneButton.md
2025-06-29 14:44:00 +03:00

6.6 KiB
Raw Blame History

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. Настройка в редакторе

// Пример настройки
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
  • Поддерживает асинхронные операции
  • Безопасен для использования в мультиплеере
  • Проверяет существование файлов сцены