Меню выбора
Объясняет, как реализовывать и настраивать интерактивные меню выбора в 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),
]);Получить
Чтобы получить текущее меню выбора, используйте narration.choices. Возвращает массив StoredChoiceInterface.
const menuOptions: StoredChoiceInterface[] = narration.choices;Запрос
Чтобы выбрать вариант, используйте narration.selectChoice.
const item = narration.choices![0]; // get the first item
narration
.selectChoice(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;