ユーザーインターフェース(UI)JavaScript Frameworks
React UI
Pixi’VNをReactと統合する方法(セットアップ、テンプレート、最適なUIライブラリを含む)。 Reactでビジュアルノベルやストーリー主導のゲームを作成しましょう。
Pixi’VNはビジュアルノベルReactエンジンとして優れた性能を発揮し、Pixi’VNがナレーションとキャンバスを処理する一方で、Reactコンポーネントを使ってビジュアルノベルやストーリー重視のゲームのUIを構築できます。
Reactとは? Reactは、ウェブサイトやアプリなどのユーザーインターフェース(UI)を構築するためのJavaScriptライブラリです。 無料でオープンソースであり、Meta(旧Facebook)と大規模なコミュニティによってメンテナンスされています。
Reactについては、Reactのウェブサイトで詳しく知ることができます。
Pixi’VNをReactアプリケーションに追加する方法
テンプレート
Reactを使用したPixi’VNのテンプレートが用意されています。 詳細については、テンプレートセクションをご覧ください。既存のReactアプリケーションにPixi’VNを追加したい場合は、以下の手順に従ってください。
既存のReactアプリケーションにPixi’VNを追加したい場合は、以下の手順に従ってください。
まず、Reactアプリケーションが必要であり、pixi-vnをインストールする必要があります。 新しいReactアプリケーションを作成するには、Viteを使用することをお勧めします。
次に、以下のファイルの内容を、下記のコードに置き換えることができます:
import { Assets, canvas, Container, drawCanvasErrorHandler, Game, showImage, sound } from "@drincs/pixi-vn";
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import App from "./App.tsx";
import "./index.css";
createRoot(document.getElementById("root")!).render(
const body = document.body;
if (!body) {
throw new Error("body element not found");
}
Game.init(body, {
height: 1080,
width: 1920,
backgroundColor: "#303030",
resizeMode: "contain",
}).then(() => {
showImage(
"juliette",
"https://raw.githubusercontent.com/DRincs-Productions/pixi-vn-bucket/refs/heads/main/icon.webp",
{ xAlign: 0.9, yAlign: 0.1, anchor: 0.5 },
).then(() => {
canvas.animate("juliette", { angle: 360 }, { repeat: Infinity, duration: 5 });
});
// Pixi.JS UI Layer
canvas.layers.add("ui", new Container());
// Sound setup
sound.channels.add("bgm", { background: true });
sound.channels.add("sfx");
sound.defaultChannelAlias = "sfx";
// React setup with ReactDOM
const root = document.getElementById("root");
if (!root) {
throw new Error("root element not found");
}
const htmlLayout = canvas.htmlLayers.add("ui", root);
if (!htmlLayout) {
throw new Error("htmlLayout not found");
}
const reactRoot = createRoot(htmlLayout);
reactRoot.render(
<StrictMode>
<App />
</StrictMode>,
)
});
Game.onEnd(async (props) => {
Game.clear();
// Navigate to the main menu after the game ends
});
Game.addOnError(drawCanvasErrorHandler());
Game.addOnError((error, props) => {
console.error(`Error occurred`, error);
});
Game.onLoadingLabel((_stepId, { id }) => Assets.backgroundLoadBundle(id));