Pixi’VN

Горячие клавиши

Как создавать сочетания клавиш (горячие клавиши) в Pixi’VN с помощью TanStack Hotkeys, с примерами быстрого сохранения/загрузки и управления мини-игрой.

Горячие клавиши позволяют игрокам напрямую выполнять действия с клавиатуры, например быстро сохранять игру, пропускать диалог или управлять мини-игрой. Вместо того чтобы самостоятельно управлять вызовами window.addEventListener("keydown", ...), рекомендуется использовать TanStack Hotkeys — библиотеку, которая превращает ввод с клавиатуры в типизированную систему команд с областями действия, последовательностями, удерживаемыми клавишами и обнаружением конфликтов.

Список горячих клавиш, часто используемых в visual novel (быстрое сохранение, быстрая загрузка, история, настройки, ...) доступен в разделе FAQ.

Использование

Зарегистрируйте горячую клавишу с помощью хука useHotkey:

import { useHotkey } from "@tanstack/react-hotkeys";

useHotkey("Mod+S", () => {
    quickSave();
});

Модификатор Mod автоматически преобразуется в Meta (Cmd) на macOS и в Control на Windows/Linux, поэтому один и тот же код работает на всех платформах.

Область действия и условное включение

useHotkey — это хук, поэтому он регистрирует сочетание клавиш при монтировании компонента и автоматически удаляет его при размонтировании компонента — вам не нужно самостоятельно удалять обработчик, в отличие от ручного window.addEventListener.

Используйте параметр target, чтобы ограничить действие горячей клавиши определённым элементом, и enabled, чтобы включать или выключать её в зависимости от состояния игры, например пока выполняется мини-игра:

const panelRef = useRef<HTMLDivElement>(null);

useHotkey("Escape", () => closePanel(), { target: panelRef });
useHotkey("ArrowUp", () => setDirection(0, -1), { enabled: !gameOver });

Узнать больше

TanStack Hotkeys также поддерживает последовательности клавиш (например, «G, затем D»), удерживаемые клавиши, обнаружение конфликтов и панель инструментов разработчика. Полный список возможностей см. в официальной документации.

На этой странице