RPGツクールMZ応用編 変数に文字列を代入しADV風UIを作る方法

当ページのリンクには広告が含まれています。

今回は、RPGツクールMZで変数に文字列を代入する方法を紹介します。

変数というと、数字を入れて足したり引いたりするものだと思われがちです。けれど、実は文字列を入れることもできます。やり方はかなり簡単です。

先に結論から見ていきましょう。

1. 変数に文字列を代入する基本

変数に文字列を入れるには、イベントコマンド1ページ目の「ゲーム進行」から「変数の操作」を開きます。

そこで、文字列を入れたい変数を指定します。今回は、変数番号1番を使います。

変数そのものがよく分からない場合は、以前の「変数入門」の内容を先に見ておくと理解しやすいです。

1-1. 文字列を代入する手順

手順は次の通りです。

  1. 格納したい変数を選ぶ。今回は変数番号1番
  2. 操作を「代入」にする
  3. オペランドで「スクリプト」を選ぶ
  4. ダブルクオテーション、またはシングルクオテーションで囲って、任意の文字列を入れる

今回は `”こんにちは”` と入力します。

ポイントは、文字列をそのまま入れるのではなく、クオテーションで囲むことです。

変数の操作でオペランドをスクリプトにし、半角クオテーションで文字列を入力する画面

1-2. クオテーションは必ず半角にする

ダブルクオテーションやシングルクオテーションは、必ず半角で入力してください。

全角のクオテーションだと正しく動きません。見分け方としては、半角のクオテーションは縦にまっすぐで、全角のクオテーションは少し斜めに見えます。

RPGツクールMZのスクリプト欄では、この違いが原因でエラーになることがあります。斜めに見えるクオテーションは使わない、と覚えておくと安全です。

1-3. 文章に出力して確認する

変数番号1番に「こんにちは」を入れたら、文章として出力して確認します。

イベントコマンド1ページ目の「メッセージ」から「文章の表示」を選び、変数を出力したい場所に `\V[1]` と入力します。

`\V[1]` は、変数番号1番の中身を表示する制御文字です。

ただし、プレビューではうまく表示されないはずです。`000` と出てきます。これは、プレビューの時点では変数番号1番に何も代入されていないためです。

正しく確認するには、イベントを選択した状態で Ctrl+R を押してテストプレイを開きます。実行すると「こんにちは」と出力されます。

さらに、この状態で F9 を押してデバッグメニューを開くと、変数1番に「こんにちは」と入っていることも確認できます。デバッグメニューについては、以前の「デバッグ入門」で扱っています。

文章の表示で制御文字Vを使い、変数の中身をメッセージに出す画面

2. 実例1: 曜日を文字列で切り替える

ここからは、実際にどんな場面で使えるのかを見ていきます。

まずは、恋愛アドベンチャーゲームのような仕組みで、曜日を表示する例です。

以前の「変数入門」では、ギャルゲーの月と週を出力する方法を紹介しました。今回はそこに曜日を加えます。

たとえば、次のように進行するイメージです。

  • 1日目の月曜日 → 朝になる → 夕方になる → 夜になる
  • 2日目の火曜日 → 朝になる → 夕方になる → 夜になる
  • 7日目の日曜日まで進んだら、次は1日目の月曜日に戻る

2-1. プログラムの中身

曜日を切り替える処理は、次のように組みます。

  1. スイッチの操作で8番をオンにする
  2. 変数番号1番(日数)に1を代入する
  3. ループの中で、日数に応じて変数番号2番(曜日)に文字列を代入する
  4. 背景画像を朝・夕方・夜に切り替える
  5. 条件分岐で日数を進める。日数が7でないときは+1し、7日目だったときは1を代入して月曜日に戻す

曜日の代入は、次のような形です。

  • 日数1 → 「月曜日」
  • 日数2 → 「火曜日」
  • 日数3 → 「水曜日」
  • 以降も同じように設定する

曜日を文章に直接書くのではなく、変数に文字列として入れておくと、日数に応じて表示を切り替えられます。

画面左上に1日目月曜日と表示され、曜日文字列が切り替わる実行画面

3. 実例2: 好感度で印象テキストを変える

もう1つの例として、好感度によって「あなたへの印象」の文章を変える仕組みを作ります。

ギャルゲーのように、女の子の好感度に応じて表示テキストや表情が変わるイメージです。

  • 好感度0 → 「誰だろう」
  • 好感度1 → 「気になる」。表情も変化
  • 好感度2 → 「好きかも」。表情も変化
  • 好感度3以上 → 「大好き」。笑顔になる
  • スケベなことをすると → 好感度-1になり、印象は「スケベ」に変わる

ここで、好感度3とイコールで判定するのではなく、3以上で判定するのがポイントです。

イコールにしていると、好感度が4以上になったときに「大好き」の文章が出なくなってしまいます。

3-1. エクストラウィンドウを使う

左上にウィンドウを出すには、プラグインを使います。

今回は、トリアコンタンさんのプラグインを2つ使います。

  1. PluginCommonBase — 必ず上に配置する
  2. ExtraWindow — ウィンドウを追加するプラグイン

この2つは、RPGツクールMZを買ったときにDLCとして付属しているはずです。

DLCの場所は、「ツール」→「素材管理」→「DLC」→「ベーシック」→「プラグイン」→「オフィシャル」です。

注意点は、プラグインの順番です。PluginCommonBaseは必ず上に配置してください。順番が逆になるとエラーが出ます。

PluginCommonBaseをExtraWindowより上に配置する必要があるプラグイン管理画面

3-2. エクストラウィンドウの設定

プラグインを開くと、ウィンドウリストがあります。ここで設定すると、指定した条件でウィンドウを表示できます。

設定する内容は、主に次の通りです。

  • 何番のスイッチがオンになったときに表示するか
  • 表示テキストをどうするか
  • 文章の色を変えるか

表示テキストには、たとえば次のように入力します。

“`text
あなたへの印象 \V[4]
“`

これで、変数番号4番の中身を参照できます。

文章の色を変えたい場合は、`\C[14]` のような制御文字も使えます。色変更は必須ではありません。

ExtraWindowで表示条件と表示テキストを設定し、変数4番を参照する画面

3-3. 選択肢を実装する

イベントコマンド1ページ目の「メッセージ」から「選択肢の表示」を選び、3つの選択肢を用意します。

選択肢処理
褒める好感度+1
けなす好感度-1
スケベなことをする好感度を-1に落とし、印象を「スケベ」に変更

好感度が3以上、つまり「大好き」の状態でスケベなことをすると、文章が「もう」に変わる処理も入れています。

方向性は少し特殊ですが、好感度や選択肢に応じて印象テキストを変える例としては分かりやすいです。

好感度に応じて左上のあなたへの印象が変化する実行画面

4. アクターの名前を使う方法

文字列の表示は、変数以外でも実現できます。

その1つが、アクターの名前を使う方法です。

`\N[ID]` と入力すると、そのIDのアクター名に置き換えられます。たとえば、アクター番号1番の名前が「ダンディ」になっている場合、`\N[1]` と入れると「ダンディ」と表示されます。

変数の場合、何も代入されていないと `0` が表示されます。一方、アクター名は最初から情報が入っているため、すぐに文字列として表示できます。

4-1. 名前の変更で文字列を切り替える

先ほどの「印象」の文字列も、変数の操作ではなく、イベントコマンド1ページ目の「アクターの名前の変更」で切り替えることができます。

4番目のアクターの名前を、次のように変更していく形です。

  • 「誰だろう」
  • 「気になる」
  • 「好きかも」
  • 「大好き」

この方法では、ダブルクオテーションやシングルクオテーションは不要です。文字だけ入力すれば動きます。

エクストラウィンドウの表示テキストも、`\V[4]` ではなく `\N[4]` に変えれば、同じように表示できます。

アクターの名前の変更で印象文を切り替えるイベントコマンド画面

4-2. どちらを選ぶべきか

変数を使う方法でも、アクター名を使う方法でも、どちらでも実装できます。

ただし、簡単なのはアクター名を使う方法だと思います。

変数の操作で文字列を扱う場合、クオテーションが半角か全角かでエラーになることがあります。そこが分かりにくい場合は、アクターの名前を変更する方法のほうが安全です。

文字列を柔軟に扱いたいなら変数、クオテーションのミスを避けたいならアクター名の変更、と使い分けるとよいでしょう。

まとめ

RPGツクールMZでは、変数に数字だけでなく文字列も代入できます。

基本は、変数の操作でオペランドを「スクリプト」にし、`”文字列”` のように半角クオテーションで囲って代入するだけです。

今回のポイントをまとめます。

  • 変数に文字列を代入するには、「変数の操作」→「スクリプト」→ `”文字列”` と入力する
  • クオテーションは必ず半角にする
  • 文章に表示するときは `\V[番号]` を使う
  • 曜日表示や好感度による印象変化など、ADV風UIに応用できる
  • アクターの名前変更と `\N[番号]` を使う方法もあり、こちらはクオテーションのミスが起きにくい

ADV風の画面を作るとき、文字列をどう切り替えるかを覚えておくと、表示できる情報の幅が広がります。