Меню выбора
Объясняет, как реализовывать и настраивать интерактивные меню выбора в Pixi’VN, позволяя игрокам принимать решения, влияющие на историю.
Экран UI
Пример экрана UI меню выбора можно найти в разделе примеры интерфейса.
ink
Этот метод можно использовать с синтаксисом ink. Подробнее здесь.
В визуальных новеллах меню выбора позволяют игроку принимать решения, влияющие на историю.
В Pixi’VN вы можете предложить игроку сделать выбор. Каждый выбор может либо запустить нарративный узел (label), либо закрыть меню выбора.
Требование к игроку сделать выбор
Чтобы потребовать от игрока сделать выбор, установите narration.choices в массив StoredChoiceInterface. Для создания объекта StoredChoiceInterface используйте:
import {
newChoiceOption,
newCloseChoiceOption,
narration,
newLabel,
} from "@drincs/pixi-vn";
export const startLabel = newLabel("start", [
async () => {
narration.dialogue = "Choose a fruit:";
narration.choices = [
newChoiceOption("Orange", orangeLabel, {}), // by default, the label will be called with "call"
newChoiceOption("Banana", bananaLabel, {}, { type: "jump" }),
newChoiceOption(
"Apple",
appleLabel,
{ quantity: 5 },
{ type: "call" },
),
newCloseChoiceOption("Cancel"),
];
},
() => {
narration.dialogue = "Restart";
},
async (props) => await narration.jump("start", props),
]);Получить
To get the current choice menu, use narration.choices.list. Возвращает массив StoredChoiceInterface.
const menuOptions: StoredChoiceInterface[] = narration.choices.list;Запрос
To select a choice, use narration.choices.select.
const item = narration.choices.list![0]; // get the first item
narration.choices
.select(item, {
// Add StepLabelProps here
navigate: navigate, // example
// And the props to pass to the label
...item.props,
})
.then(() => {
// ...
})
.catch((e) => {
// ...
});Удалить
Чтобы очистить варианты выбора, установите narration.choices = undefined.
narration.choices = undefined;