供養するだけしておきます ※令和のドパガキにはつらくて長ーい説明なので覚悟の準備をしておいてください Mキーは「Main_Title」を送る機能になっています。完成品には外しましょう。 スプライト「GUI」の「Main_Titleを受け取ったとき」に製作者がGUI生成に使用するコードがあります。 リスト(GUI_data) ちなみにインデックスはリストの添字のこと。Scratchでは1, 2, 3,...と続く。「リストGUI_dataの~番目」っていう言い方をします。 リスト(GUI_data)にはひとつの要素内にボタン、ラベル、カーソルのデータを記述することになる。 リスト(GUI_data)の詳しい書き方及び具体例は最後の方に記しておく。ここでは全体の使い方について簡潔に説明する。 GUI_dataにおいて*と,は文字列を区切る目印として使われる。そして;はカーソルの処理に使うので、これらは***変数「scene_GUI」とリスト「GUI_data」に使われることはない。***超重要!! まとめ : リストGUI_dataと変数scene_GUIには、*と,と;を絶対に使わない!! 'は同じリストのデータ内にscene_GUIのデータを複数内包した状態にする。この表記はクローンされた後「どんなscene_GUIになったらこのボタン・ラベル・カーソルを削除するか?表示するか?隠すか?」を表すのに使われる。 ( 例:'Game_start'Settings' 例えばこうすることで、この文字列の中に変数「scene_GUI」が返す値'Settings'が含まれていることを**検出**できる。 ) 実際に変数scene_GUIに代入するためのデータは''によって括られる。超重要!! 以降、打ち込むデータは()*または(),の形式で表されているが、この()は打ち込まないこと。文字列のデータなら()を付しても構わないが、ややこしくなるだけなので推奨しない。よくないなあ、こういうのは 関数「Build GUI(引数:インデックス値)」について: この関数はリストGUI_dataの(インデックス)番目のボタン・ラベル・カーソルを生成する。これが全てのGUI生成の起点となる! 後述するが、生成した各クローン(ボタン、ラベル)がカーソルを生成することができる。 カーソルは何も生成できないようにしておいたが、カーソルは必ず最後に生成するように!(厳密にはカーソルを生成した後にボタンを生成しないように!) これを忘れると[[バグって死ぬ]]ことになりまs。 ボタンを押した時に変数を操作したり、イベントを発生させたりしたーい!という欲深な君たちへ: その欲望、解放しろ! チャリーン(セルメダルを入れる音) 定義「Button_act」ブロックの「ここにそのインデックスのボタンが発動する機能の条件を書くのだ」のところに各インデックスのボタンがどの条件でなら反応するかを決める。 定義「Button_sound <ON/OFF>」の「ここにそのインデックスのボタンに何をさせたいのか書くのだーーー\(˚v˚)/」というコメントがあるところに、変数GUIの条件分岐がある。 変数GUIはそのボタンに対応するGUI_dataのインデックス値と等しい。よってそれぞれのボタンに機能を持たせることが可能だ。例えば日本語と英語を切り替えたりとか。 これを上手く使い、さらなる更生に励むと良い...(CV:イゴール) ***つまりこのツールを使う人はリスト(GUI_data)、定義「Build GUI(インデックス)」、定義「Button_act」、定義「Button_sound <ON/OFF>」だけ考えれば良い。*** ***最後の注意点*** 先述のようにこのスプライトを導入すると、もれなくB, C, X, Mキー,それとデフォルトのキーコンフィグによって矢印キーでのカーソル移動、がついてくる。 なので、完成品には「Bキーが押されたとき」、「Cキー(略)」、「Xキー(略)」で発動するこれらのお助け機能は解除しておきましょう。裏コマンドなら発動できても良いかも? 製作者が操作しても良い(あるいは使いこなさなければならない)変数・リストをここに列挙しておきます。 変数... scene_GUI...一番重要。ほぼGUI専用です。先述のようにそれぞれのボタン・ラベル・カーソルの表示・非表示・削除のときに参照されます。デフォルトでは文字列「'Menu1'」が代入されており、最初に表示されるボタン「START」「LOAD」「SETTINGS」およびカーソルはscene_GUIが「'Menu1'」のときまで表示され、「'Menu1'」ではなくなったら削除されます。例えば、「SETTINGS」ボタンが押されてscene_GUIに「'Settings'」が代入されたことで3つのボタンが全部削除され、「SETTINGS」ボタンが押されたときに生成するように指定しておいたGUIが生成されていく...という感じです。 CURSOR_TIME... カーソルが移動しっぱなしになるためのフレーム数。これは定数なので大文字にしておきましたが、色々カスタマイズできます。 CURSOR_TIME2... 矢印キー押しっぱでカーソルが1回移動するまでのフレーム数。これは定数なので大文字にしておきましたが、色々カスタマイズできます。 debug_mode...「dキーが押されたとき」のブロックで始まるコードを参照。 language...GUIを英語か日本語に切り替えます。デフォルトで切り替えボタンが例として(?)作ってあるので参考にしてみましょう。 master_volume_bgm...私は使ってないですがいろいろ使ってみましょう(丸投げ) scene...私は「現在どんなゲーム場面か?」をこの変数に代入して使っていました。 例えば、 「<(scene)=(「Main_Title」)>まで繰り返す」みたいな。 リスト... GUI_data...一番重要。これがないと始まらない。ボタン・ラベル・カーソルの情報をまとめた文字列をここにぶちこんでいくのですが、その記述法は後述。 GUI_key_config...ボタンの割り当てをいろいろ変えられます。「Main_Titleを受け取ったとき」以降のコードに初期設定してあるので、それを参照。 製作者が操作することを想定していない(あるいはいじるととても後悔する)変数・リストをここに列挙しておきます。 変数... cursor_counter cursor_counter2 cursor_time cursor_pos_counter GUI GUI_backup GUI_ghost リスト... cursor_data cursor_position_data GUI_data_of_clone ********************************************************************* 制作お助け機能! デバッグモード: Bキーを押すとデバッグモードを起動する。「Bキーが押されたとき」のスクリプト構造を他のスプライトの専用変数・リストにも応用し、制作の助けとするべし。 スタンプ機能: GUIのスプライトは1つしかない。なのでこのままでは複数のボタンを配置しながら画面をデザインできないですが、 このスプライトにはXキーを押したときに背景にボタンをそのままスタンプできます。 ファイナルベント (どっかーん) こういうごちゃごちゃした戦いは好きじゃない(CV:北岡秀一) Cキーを押せばあっという間に全消しです。ですが調子に乗ってプロジェクトを動かすときにスタンプを消し忘れて「バグった!?(˚∆˚)」とかならないようにしましょう(by経験者) リスト(GUI_data)の記述ルール 各データを*または,で切り分けられるように繋げて一つの文字列にしてしまいます。最初はメモ帳などを使って改行が入ったテキストファイルにして、後から改行を消すと良いでしょう。読むだけだとうまく想像できないと思うので、記述例は各GUIの記述法の下に載せてあります。 (メモとクレジットに続く)