スクリプト
ストーリーアクションとして任意のコードを実行する `Script` 要素。ゲーム状態にアクセスでき、アンドゥ時のクリーンアップにも対応
Script を使うと、スクリプトを実行してゲームと連携できます。
scene.action([
new Script(({ storable }) => {
console.log("This script is being executed.");
// ユーザーに入力を求める
const price = prompt("How much do you want to pay for this item?");
const namespace = storable.getNamespace("test");
if (!isNaN(price)) {
namespace.set("price", price);
}
})
]);静的メソッド
execute
指定したハンドラーで新しい Script インスタンスを作成し、プロキシされたオブジェクトとして返します。
handler: ScriptRun- 実行するスクリプトハンドラー関数- 戻り値:
Proxied<Script, Chained<LogicAction.Actions>>- プロキシされた Script インスタンス
const script = Script.execute(({ storable }) => {
console.log("Script executed via static method");
const namespace = storable.getNamespace("test");
namespace.set("value", 42);
});
scene.action([
script, // ストーリーにスクリプトを追加
]);公開メソッド
constructor
handler: (ctx: ScriptCtx) => void- スクリプトが実行されると、このハンドラーが呼び出されます。ハンドラーは ScriptCtx オブジェクトを受け取ります。
handler 関数に副作用がある場合は、クリーンアップ関数を返す必要があります。
このクリーンアップ関数は、プレイヤーがアクションをアンドゥしたときに呼び出されます。
new Script((ctx) => {
const token = setTimeout(() => {
console.log("This script is being executed.");
}, 1000);
return () => clearTimeout(token);
})const script = new Script((ctx) => {
console.log(ctx.gameState);
});