ツクールMVのスクリプトで文章の表示を行う方法++

テンプレートリテラルのお話。
前回の記事もあります。

ひつようなちしき:
・スクリプトコマンドを使ったことがある

ツクールMV のVer.1.6.1で、『JavaScriptのES2015,ES2016,ES2017に対応。』
されたらしいです。
http://rpgtkool.hatenablog.com/entry/2018/06/21/161news

このES何々に対応したことで、アロー関数とか、findメソッドとか、いろいろ便利な機能が追加されたわけですが、今回はその中からテンプレートリテラルというものについて紹介したいと思います。

通常ツクールMVで、スクリプトを使って文章を表示しようとした場合、

$gameMessage.add("表示する文章")

を使います。

例えばこう書くと、

$gameMessage.add("こんにちは")

こう表示されるわけですね。

前回は説明しませんでしたが、ここに変数を入れることも可能です。

$gameMessage.add("こんにちは" + $gameActors.actor(1).name() + "さん")

文字列はダブルクォーテーション「"」やシングルクォーテーション「'」で囲って、変数と+で繋げばOKです。
ちょっと面倒くさくなってきました。

じゃあ次のように、アクター名がたくさん出てくる文章を表示したい場合は?

コードはこうなります。

$gameMessage.add("先頭には" + $gameActors.actor(1).name() + "さん。\nその次に" + $gameActors.actor(2).name() + "さん。\n一番後ろに" + $gameActors.actor(4).name() + "さんを配置してください")
// \nを入れるとそこで改行できるよ

はい。書くのめっちゃ大変だし、読みづらいし、+や"が一つでも抜けたらエラー落ちするしで最悪ですね。
しかもクォーテーション「"」で囲った文の途中で改行できない(しづらい)ので、横に長くなっていけません。
実際この1行を書こうとするだけで何回かエラー起こして詰まりました。

そこで登場するのがテンプレートリテラル。ver1.6.1で追加されたテンプレートリテラルというわけです。

こいつの書き方は簡単です。
まず文章は「"」や「'」で囲っていたのを、バッククォート「`」で囲えばいいです。
バッククォートは、日本語キーボードだと「Shift + @」で打てます。

$gameMessage.add(`こんにちは`)

さらにこいつは、囲い``の中で改行しても、それを反映してくれます。

$gameMessage.add(`こんにちは
ここははじまりの村です
どうぞゆっくり疲れを癒やしていってください`)

// \nでの改行も今までどおり可能です。混ぜてもOK
$gameMessage.add(`こんにちは\nここははじまりの村です\nどうぞゆっくり疲れを癒やしていってください`)

いいですね。

そして変数を表示したい場合は、${}で囲みます。

$gameMessage.add(`こんにちは${ $gameActors.actor(1).name() }さん`)

文の途中で変数を入れたい場合も、いちいちクォーテーション「"」で中断しなくても良くなったわけです。

この書き方で、先程最悪だったコードを書いてみましょう。

$gameMessage.add(`先頭には${ $gameActors.actor(1).name() }さん。
その次に${ $gameActors.actor(2).name() }さん。
一番後ろに${ $gameActors.actor(4).name() }さんを配置してください`)

見やすくなりましたね!

通常のゲーム内変数に代入することもできますよ

このようにスクリプトで文章を書く時に、テンプレートリテラルは重宝します。ぜひみなさんも使ってみてください!
(使う場合はVer1.6.1以降にアップデートしてくださいね)


この記事が気に入ったらサポートをしてみませんか?