Character
対話を扱う`Character`クラス。Sentence、命名、ダイアログボックスのアバターと立ち絵の紐付けを扱う
Characterはキャラクターの台詞を制御します。
注意: Character自体は舞台上のスプライトのレイアウトを制御しません。舞台上の表示要素にはImageを使用してください。ダイアログボックスのアバター(ADVテキストの隣に表示する小さな立ち絵)については、avatar/portraitsを設定し、Avatarをレンダリングしてください。詳しくはDialogを参照してください。
パブリックメソッド
constructor
name: string | null-nullの場合はナレーターになります。ナレーターはダイアログボックスに名前を表示しません。config?: DeepPartial<CharacterConfig>- CharacterConfig
[[Callable]]
character.sayはタグ関数として使用できます。
character`Hello, ${Word.color("Alice", "#f00")}!`, // "Alice"を赤色にした "Hello, Alice" を出力する
// は次と等価
character.say`Hello, ${Word.color("Alice", "#f00")}!`注意: この短縮記法は、Webpackなどの一部のパッケージングツールではチェーンできません。
scene.action([ character`sentence 1` `sentence 2`, // これはエラーになる ]);
チェーン可能なメソッド
say
オーバーロード1/4
1つの文を発言する。
character
.say("Good morning!")
.say("How are you?")content: string- 文の内容config?: SentenceUserConfig- SentenceUserConfig
オーバーロード2/4
カスタムのSentenceオブジェクトを使用する。
character.say(
new Sentence(character, [
"Good morning, I am ",
new Word("Alice", {color: "#f00"}), // 一部の単語には色を付けられる
])
) // "Alice"を赤色にした "Good morning, I am Alice" を出力する注意: 台詞の名前はSentenceの名前と同じになります。
content: Sentence- Sentenceを参照
オーバーロード3/4
文字列とWordオブジェクトが混在する内容を使用する。
character.say([
"Hello, ",
new Word("Alice", {color: "#f00"}), // 一部の単語には色を付けられる
]) // "Alice"を赤色にした "Hello, Alice" を出力するcontent: SentencePrompt- SentencePromptを参照config?: SentenceUserConfig- SentenceUserConfig
オーバーロード4/4
SentencePromptの短縮記法を使用する。
character.say`Hello, ${Word.color("Alice", "#f00")}!` // "Alice"を赤色にした "Hello, Alice" を出力するtexts: TemplateStringsArray- テンプレート文字列の配列...words: SingleWord[]- SingleWord
setName
キャラクターの名前を設定する。
character
.setName("Alice (angry)")
.say("What do you want?")name: string- キャラクターの名前
0.26.0以降、名前の変更はセーブデータに保持されます。 それ以前はCharacterが自身の状態を一切シリアライズしなかったため、名前の変更を記録したセーブは存在しませんでした。「???」と表示される話者が明かされた後にセーブしたプレイヤーは、ダイアログボックスでもバックログでも「???」のまま戻ってきていました。新しくゲームを開始した場合も、セーブをロードした場合も、今は前回のプレイが残したものではなく、作者が指定した名前が返るようになりました。
以前のバージョンで書き出されたセーブにはキャラクターのエントリが含まれませんが、問題なくロードでき、作者が指定した名前がそのまま残ります。キャラクターが今やセーブのエントリを占めるようになり、自動生成される要素idはアクションツリー上の位置を表すものであって同一性を表すものではないため、セーブを復元するアプリケーションは、
DevTools.setElementStaticIdを通じて自分のキャストに名前を付けるべきです。
setAvatar
キャラクターレベルのダイアログアバター(画面外の台詞や、可視の紐付け立ち絵が該当しない場合のフォールバックとして使われる)を設定または解除する。
const alice = new Character("Alice")
.setAvatar("/assets/alice/avatar-default.png");
alice.setAvatar(false); // キャラクターレベルのアバターを無効化するavatar: DialogAvatar | false | null— 画像ソース、リゾルバー、無効化するfalse、または解除するnull
解決の意味と優先順位についてはDialogを参照してください。
addPortrait
舞台上のImageをこのキャラクターに紐付け、任意で立ち絵レベルのダイアログアバター(文字列またはリゾルバー)を指定する。
alice.addPortrait(aliceBody, {
avatar: "/assets/alice/avatar-normal.png",
});image: Image— 舞台上の立ち絵画像config?: { avatar?: DialogAvatar }— この紐付けに対する任意のアバターの上書き
setPortraits
立ち絵のリスト全体を置き換える(Imageと{ image, avatar }が混在してもよい)。
alice.setPortraits([
{ image: aliceBody, avatar: "/assets/alice/avatar-a.png" },
bobPortraitImage,
]);portraits: (Image | CharacterPortraitConfig)[]— CharacterConfigを参照
apply
これはsayの特殊なエイリアスです。タグをそのままsayメソッドへ渡します。
注意:Webpackなどの一部のパッケージングツールを使う場合、このメソッドを次のようにチェーンすることはできません。
scene.action([ character`sentence 1` `sentence 2`, ]);ですが、その後に他のメソッドをチェーンすることはできます。
scene.action([ character`sentence 1`.setName("Alice"), ]);
このメソッドは、キャラクターが1文だけ発言する場合にコードを短くします。
scene.action([
character`Hello, ${Word.color("Alice", "#f00")}!`,
]);texts: TemplateStringsArray- テンプレート文字列の配列...words: SingleWord[]- SingleWord