【カレッジ】スクリプトゼミ #8「Menu」

前回はLevelSegmentによるラベルの振り方と、ラベルのある場所へジャンプさせるための->コマンドについて解説しました。今回はジャンプコマンドの応用ともいえるMenuコマンドについて解説します。

Menu:コマンドは、その名の通り画面にメニュー(選択肢)を表示して、プログラムのフローを分岐させるためのコマンドです。
分岐先を指定するためのラベルとして、Segment:番号、もしくはLevel:番号とSegment:番号のペアを使用しますので、あらかじめそれらの指定を埋め込んでおいてください。

【8-1】Menu:コマンド

 Menu:コマンドには、3つのオプションパラメータがあります。
1つ目はタイムアウト秒数で指定すると減算カウンターが表示され、0になるとメニューを抜けてその先に書かれているスクリプトに進みます。
2つ目はシャッフル指定のフラグで、1を指定すると選択肢の並び順をシャッフルします。クイズ問題などで、メニューの位置を覚えてしまわないように使います。
3つ目の数値を指定するとタイマーが右回転の加算方式となります。タイムアウト秒数で一周し、一周をカウンター数に分割した値をメニューを抜けた後に取得することができます。(おもにミニゲームで使用します。詳しい説明はまた別の機会に譲ります)
選択肢としてボタンに表示されるのは<>で囲んだ文字列です。その後ろに;(セミコロン)で区切った表示オプションを指定することができますが、これはフラグ変数に関する説明が必要になりますので、また別の機会の解説とします。
選択肢の文字列の次の行に->でジャンプ先を指定し、その2行のペアを最大6個記述することができます。
選択肢のボタンは、2行以上になる文字列を表示することもできますが、その画面内に6個の選択肢がおさまらない場合があります。
ボタンを多く表示したい場合は、文字列を短くするなど工夫するか、8-3で説明するWorld.menu:コマンドを使用してください。

コマンド
Menu:[タイムアウト秒数,][シャッフル指定,][カウンター指定]
メッセージ
<選択肢1>;(表示オプション)
->ジャンプ先
<選択肢2>;(表示オプション)
->ジャンプ先
<選択肢3>;(表示オプション)
->ジャンプ先
<選択肢4>;(表示オプション)
->ジャンプ先
<選択肢5>;(表示オプション)
->ジャンプ先
<選択肢6>;(表示オプション)
->ジャンプ先

 

記述例
Menu:10,1
好きな果物は?
<梨>
->Segment:100
<柿>
->Segment:200
<苺>
->Segment:300

このスクリプトを実行すると、画面のようになります。

好きな果物

シャッフルフラグを指定していますので、スクリプトに記述した梨、柿、苺という順番がシャッフルされ、梨、苺、柿の順番に表示されています。

 

【8-2】Avatar.Menu:コマンド

8-1の例で、Menu:コマンドの直後に「メッセージ」を指定しており、画面下部のセリフ枠に表示されていることがわかると思います。Avatar.menu:コマンドを使うと、メッセージ枠に自分(Avatar)の顔アイコンと名前が表示された状態でメニューメッセージを表示できます。
構文/記述例はMenu:コマンドと同じです。

 

【8-3】World.menu:コマンド(World.list:コマンド)

メニューの選択肢を、マップ移動などで使用しているスクロールバー付きのリストで表示するコマンドです。
初期のキャラフレでは、リストの幅が狭いWorld.menu:コマンドと幅が広いWorld.list:コマンドがありましたが、現在は同一デザインとなっています。World.menu:とWorld.list:の差はありません。

World.menu:コマンドを使うと、6個以上の選択肢や長い選択文字列の組み合わせも安心して表示することができます。
構文/記述例はMenu:コマンドと同じです。

worldmenu

 

 

コメントを残す

メールアドレスが公開されることはありません。

This site uses Akismet to reduce spam. Learn how your comment data is processed.