ダイアログを作ってみよう。

 

ダイアログボタンは、選択肢のようにユーザーに何かを選ばせるという時に便利です。

勿論単なるメッセージの表示として使う事も出来ますし、作り手の工夫次第で様々な形での利用が可能です。例えばこのように物語の選択肢をユーザーに選ばせる為に使ったり出来ます。

 

○手順1.変数を用意する。

ダイアログを作るには、変数が必要になります。

変数とは、プログラム経験のある方や数学の得意な方にはおなじみですが、イメージとしては何でも入れられる箱のような物です。

ただし、箱に何を入れるのかは予め決めておく必要があります。(数字を入れる、文字を入れる等)

また、箱に新しい物を入れた場合、前に入っていた物は消えてしまいます。

 

ダイアログで使う変数は2種類です。

1つは、ダイアログその物を入れる変数です。もう一つは、ダイアログボタンの情報を入れておく変数です。

上記の例ですとダイアログ用変数が一つと、ダイアログボタン用に3つ、計4つの変数が必要です。

変数を作るには、エディター上部のボタンを押して下さい。

『変数』と書かれたウィンドウが出てきたと思います。上部に並ぶボタンから、を押して下さい。

変数名と、変数タイプを入力する画面が出てきます。

変数名というのが箱の名前で、自由に命名可能です。半角アルファベットで付けて下さい。

変数タイプというのが、先述の『予め決めておく箱に入れるもの』です。プルダウンから様々な種類を選択可能です。

 

まずはダイアログを入れる変数を作りましょう。名前は『Dialog1』等、後で分かりやすい物にして下さい。

変数タイプでは『ダイアログ』を選択して下さい。ダイアログ用変数の作成はこれで終了です。

 

同様に、ダイアログボタン用の変数を作成しましょう。これも名前は『Button1-1』等、後で何の変数だったか思い出せる名前にして下さい。

変数タイプには『ダイアログボタン』を選択して下さい

今回は3つと少数なので自分で『Button1-1』、『Button1-2』、『Button1-3』と3回変数を作っても良いですが、この数が10に100にと増えて来ると変数を作る作業だけでもかなりの手間です。ここで、沢山の変数を作る場合に便利な方法を参考までに紹介します。

変数タイプの下に、『隊列』というチェック項目があります。これをオンにすると、右側に数字を入れられるようになります。

例えば『Button1』という変数名にして、チェックをオンにし数字に3を入れた場合、『Button1[1]』、『Button1[2]』、『Button1[3]』という変数を作成する事が出来ます。(実際には[0]〜[3]で4つの変数が作られます。)

[ ]で囲われた部分の数字はインデックスと呼ばれ、入力した数字分の変数の列を一気に作る事が出来るので便利です。自分の分かりやすい、使いやすい方を選んで下さい。

ともあれ、ダイアログボタン用の変数は、ご自分の必要なボタンと同じ数だけ作って下さい。

これでダイアログ作成に必要な変数は以上です。次に進んで下さい。

 

○手順2.ダイアログを『アクション』で作成する。

ここからは実際にダイアログを作成するトリガーを紹介します。

『イベント』はダイアログを発動させたいタイミングで、好きなものを設定して下さい。

開始直後であれば、『Time Elapsed』あたりが適当と思います。『Map Initialization』は様々な設定に使えるように取っておくのが無難です。

 

まず実行する『アクション』はこちらです。

『 Clear 』

ダイアログの項目の中にあります。これは先ほど作ったダイアログ用の変数をきれいな状態にする『アクション』です。

お約束の一つとして覚えて下さい。

『 Clear Dialog 』と出ますので、Dialogから先ほど作成したダイアログ用の変数を選択して下さい。

 

次に、ダイアログのタイトルを作ります。上記例ですと、『行動を選択して下さい。』の部分です。使用する『アクション』はこちらです。

『 Change Title 』

これもダイアログの項目の中にあります。『 Change the title of Dialog to Title 』と出ますので、先ほど作成したダイアログ用の変数を選択し、自由にタイトルを付けて下さい。

 

3つ目の『アクション』は、いよいよダイアログボタンを作る作業です。使用するアクションはこちらです。

『 Create Dialog Button 』

『 Create a dialog button for Dialog labelled Text』と出ますので、Dialogには先ほど作成したダイアログ用の変数を選択します。(ダイアログボタン用の変数ではありません。)

Textには、ボタンに表示したい文章を入力して下さい。

次に、続けて以下のアクションを実行して下さい。

『 Set Variable 』

Variable というのは日本語で言うと変数の事です。この『アクション』は、変数に値を入れる『アクション』です。

『 Set Variable = Value 』と表示されますので、Variable に上で作成したボタンに対応したダイアログボタン用の変数を選択して下さい。

Value には、『Last Created Dialog Button』をプルダウンから選択して下さい。

 

これ(『Created Dialog Button』&『Set Variable』)を、作りたいボタンの数だけ繰り返して下さい。

以上でダイアログボタンの作成は終了です。最後の『アクション』に進んで下さい。

 

最後の『アクション』は、作成したダイアログを画面に表示する為のものです。『アクション』はこちらです。

『 Show/Hide 』

見せる Dialog for プレイヤー1(赤)』と出ます。ダイアログを表示したい場合は見せるのままで結構です。

Dialogではダイアログ用の変数を選択して下さい。プレイヤー1(赤)の部分も、特に操作するプレイヤーを変更する事のないキャンペーンシナリオの場合はそのままで結構です。

マルチプレイ(乱闘戦)用のマップを作っている場合、『 Pick Every Player In Player Group And Do Multiple Actions 』という『アクション』の中で上記『Show/Hide』を実行する必要があります。今回は紹介を割愛します。

さあ、これで画面には作成したダイアログが表示されるはずです。気になる方は、一度テストプレイで確認して見て下さい。文字数が多すぎてボタンから文字がはみ出ていないか等も確認してみて下さいね。

 

○手順3.ダイアログボタンが押された時の処理を作る。

せっかく作ったダイアログボタンも、現在のままではただのボタンです。実際にテストプレイで押してみた方も、何も起こらなくて詰まらなかったかも知れません。

ここでは、実際にダイアログが押された場合に、どのようにそれぞれ対応するかを紹介します。

 

まず、新しいトリガーを作成します。名前は例によって判りやすい物にして下さい。

『イベント』には、『 Dialog Button Click 』を選択して下さい。

『A dialog button is clicked for Dialog 』と表示されますので、Dialogの部分に先ほど作成したダイアログ用の変数を選択して下さい。

 

今回使用する『アクション』は、複数の内部構造を持つ一見難しく見える『アクション』です。

『 If / Then / Else, Multiple Functions 』

これは、日本語で言うと『 If(もし) / Then(ならば) / Else(そうでなければ), Multiple Functions(〜を行え) 』といった感じでしょうか。プログラムを経験した方にはおなじみの条件分岐というものです。

この『アクション』を入力すると、以下のようなサブツリーが現れます。

『 If - 条件 』

『 Then - アクション 』

『 Else - アクション 』

これは、『 If - 条件 』で設定した条件を満たしていれば、『 Then - アクション 』に設定した『アクション』を行い、満たしていなければ『 Else - アクション 』に設定した『アクション』を行うという命令なのです。

 

では実際に、この『アクション』を使ってどのように押されたダイアログボタンを判別すれば良いでしょうか。

今回はシンプルに、『押されたダイアログボタンが変数(ダイアログボタン)と同じならば〜を行う、そうでないならば何もしない。』という『アクション』をボタンの数だけ作成する事にします。

文章で書くと分かりにくいですが、要するに『総当りで押されたボタンを確認する』という作業です。

実際のトリガーの中身を紹介しながら解説します。

 

ボタンの数が3つなので『アクション』も3つです。全て『 If / Then / Else, Multiple Functions 』です。

まずは、押されたボタンが1つめのダイアログボタンかどうか判定する『アクション』を作ります。

『 If - 条件 』には『 Dialog Button Comparison 』という条件を設定します。これは押されたダイアログボタンの状態を確認してくれる便利な『条件』です。

(Clicked dialog button) イコール Value 』と表示されます。(Clicked dialog button) は『押されたダイアログボタン』という意味です。変更なしで結構です。イコールの部分もそのままでOKです。

Valueの部分で、1つ目のダイアログボタンに対応するダイアログボタン用の変数を設定して下さい。

以上で、『押されたのが一つ目のダイアログボタンなら』という『条件』が作成されました。

 

そのダイアログボタンが押された時に起こす『アクション』は『 Then - アクション 』の中に設定して下さい。

例えばアイテムを貰えるという『アクション』や、ユニットが仲間になるといった『アクション』等、何でも自由に設定可能ですが、まずは『Text Message (Auto-Timed)』あたりの『アクション』で文字表示によるテストをする事をお勧めします。

『 Else - アクション 』は何も入力しなくて結構です

 

同様に、ダイアログボタン2、3についても『 If / Then / Else, Multiple Functions 』を作成して下さい。

中身は、『 If - 条件 』のValueがそれぞれ対応するダイアログボタン用の変数に変わっただけで、後は同じです。(もちろんそれぞれの『 Then - アクション 』の中身は変わって来るでしょうが。)

 

以上でダイアログボタンが押された時に、それぞれ違う『アクション』が起こせるトリガーが作成されました。

複数回ダイアログを表示する場合、その都度タイトルを『 Change Title 』で設定しないとタイトルが消えてしまうという事にだけ気をつけて下さい。

 

完成したダイアログボタンのトリガーはこのような形になります。

『ダイアログ作成トリガー』

 

『ダイアログボタン判別トリガー』

 

習うより慣れよと言いますが、実際に作ってみるとそれほど難しいものではありません。積極的に取り入れる事で、アドベンチャーゲーム的要素も組み込む事が可能です。

是非試してみて下さい。

@WC3WEG