# Выборы

Данная функция позволяет предоставить пользователю несколько вариантов выбора и перенаправить выполнение сценария в зависимости от того, какой выбор делает пользователь.

Выборы

Используйте команды @choice, за которыми следует список выборов и (необязательно) путь goto, чтобы добавить варианты из сценариев Naninovel:

; Вывести текст, затем сразу же показать варианты и остановите выполнение сценария.
Продолжить выполнение этого сценария или загрузить другой?[skipInput]
@choice "Продолжить со следующей строки"
@choice "Продолжить с указанной отметки" goto:.Labelname
@choice "Загрузить другой с начала" goto:AnotherScript
@choice "Загрузить другой с указанного отметки" goto:AnotherScript.LabelName
@stop

Значение параметра goto – это путь для перемаршрутизации после того, как пользователь сделает соответствующий выбор. Он задается в следующем формате: имя скрипта.имя отметки. Если имя отметки опущено, то указанный сценарий будет воспроизведен с самого начала; если имя сценария опущено, то ссылка будет сделана на метку в воспроизводимом в данный момент сценарии:

; Загружает и начинает воспроизводить сценарий Naninovel с именем `Script001` с самого начала
goto:Script001

; То же самое, что и выше, но начинает воспроизводить с отметки `AfterStorm`
goto:Script001.AfterStorm

; Переводит воспроизведение на отметку `Epilogue` в воспроизводимом в данный момент сценарии
goto:.Epilogue

Если параметр goto не указан, выполнение текущего сценария продолжится со следующей строки.

Акторы обработчика выбора используются для обработки команд @choice. Вы можете добавлять, редактировать и удалять обработчики выборов с помощью диспетчера выборов, доступного через контекстное меню Naninovel -> Resources -> Choice Handlers.

Поведение обработчиков выборов можно настроить с помощью контекстного меню Naninovel -> Configuration -> Choice Handlers; доступные параметры см. в руководстве по конфигурации.

# Кнопки выбора

Команда @choice принимает опциональный параметр button, указывающий путь (относительно папки "Resources") к пользовательскому префабу, представляющей объект варианта выбора.

@choice handler:ButtonArea button:MapButtons/Home pos:-300,-300 goto:.HomeScene

– здесь мы используем обработчик выбора, поддерживающий позиционирование, чтобы представить интересующую нас точку на импровизированной карте, где параметр button указывает на префаб, состоящий из кнопки, наложенной поверх изображения. Префаб хранится здесь: Assets/Resources/MapButtons/Home.prefab.

Чтобы создать сборную кнопку выбора из шаблона, используйте контекстное меню ассетов Create -> Naninovel -> Choice Button.

Не забывайте хранить пользовательские кнопки выбора в папке "Resources", иначе они не смогут загружаться по запросу.

Если параметр button команды @choice не задан, используется префаб кнопки по умолчанию.

Чтобы использовать другой текстовый компонент (например, TMPro) для текста выбора, используйте On Summary TextChanged (событие Unity компонента кнопки выбора).

# Списочный обработчик выбора

Обработчик списка используется по умолчанию. Он располагает кнопки выбора внутри горизонтальной панели компоновки и игнорирует параметр pos команды @choice.

# Обработчик выбора по области

В отличие от списочного обработчика, областной не навязывает какой-либо конкретный макет и позволяет вручную устанавливать позиции добавленных кнопок выбора с помощью параметра pos. Например, вот один из способов создания интерактивной карты с командами выбора и обработчиком областей:

# Map
@back Map
@hidePrinter
@choice handler:ButtonArea button:MapButtons/Home pos:-300,-300 goto:.HomeScene
@choice handler:ButtonArea button:MapButtons/Shop pos:300,200 goto:.ShopScene
@stop

# HomeScene
@back Home
Home, sweet home!
@goto .Map

# ShopScene
@back Shop
Don't forget about cucumbers!
@goto .Map

# Добавление пользовательских обработчиков выбора

Вы можете добавить пользовательские обработчики выбора на основе встроенных шаблонов или создать новые обработчики с нуля. Например, давайте настроим встроенный шаблон ButtonArea.

Используйте контекстное меню ассетов Create -> Naninovel -> Choice Handler -> ButtonArea, чтобы создать префаб обработчика кнопки на за пределами пакета Naninovel, например, в папке Assets/ChoiceHandlers.

Отредактируйте обработчик: измените шрифт, текстуры, добавьте анимацию и т.д. Дополнительные сведения о доступных инструментах редактирования пользовательского интерфейса см. в документации Unity.

Сделайте обработчик доступным для ресурсов движка с помощью графического менеджера обработчиков выбора, к которому можно обратиться через контекстное меню редактора Naninovel -> Resources -> Choice Handlers. Добавьте новую запись с помощью кнопки + (плюс), введите ID актора (может отличаться от имени префаба) и дважды щелкните запись, чтобы открыть настройки актора. Перетащите префаб обработчика в поле Resource.

Теперь вы можете использовать новый обработчик выбора, указав его ID в параметре handler команд @choice.

@choice "Текст выбора" handler:MyNewHandler

Кроме того, можно создать обработчик выбора с нуля, вручную реализовав интерфейс IChoiceHandlerActor. См. руководство по реализации пользовательских акторов для получения дополнительной информации.

Обновлено: October 5, 2020