144 lines
6.6 KiB
Markdown
144 lines
6.6 KiB
Markdown
# 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<SceneFile>()`
|
||
- Перезапуск игры с новой сценой
|
||
- Динамическая загрузка префабов вместо смены сцены
|
||
|
||
## Совместимость
|
||
|
||
- Работает с любыми сценами в формате `.scene`
|
||
- Совместим с системой взаимодействий s&box
|
||
- Поддерживает асинхронные операции
|
||
- Безопасен для использования в мультиплеере
|
||
- Проверяет существование файлов сцены |