ツクール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以降にアップデートしてくださいね)
この記事が気に入ったらサポートをしてみませんか?