# Выборы
Данная функция позволяет предоставить пользователю несколько вариантов выбора и перенаправить выполнение сценария в зависимости от того, какой выбор делает пользователь.
Используйте команды @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
. См. руководство по реализации пользовательских акторов для получения дополнительной информации.