GUIの作り方

@guiコマンド

@gui コマンドは GUI (グラフィカルユーザインタフェース) を表示します。 @gui コマンドは、ゲーム起動後のメニュー画面を表示するための @menu コマンドや、 すでに見たCGを鑑賞するモードを作成するための @retrospect コマンドを置き換え、 より直感的にGUIを作成可能とするために導入されました。
@gui コマンドは、最大で128個のボタンを作成することができ、 ボタンの種類は、「ラベルにジャンプする」、「変数がセットされていれば表示する」、「音量のスライダーを表示する」、など多岐に渡ります。
GUI定義ファイル(gui/フォルダにある)はコンフィグ画面、セーブ画面、ロード画面、履歴画面を作るためにも使用されます。
GUI定義ファイルはCSS風の構造を持っており、CSSを理解する人であれば直感的に、Suika2Scriptとは切り離して理解することができます。

GUI定義ファイルの呼び出し

GUI定義ファイルの呼び出しは他の呼び出しコマンド、つまり @goto@load と同様です。

@gui file.txt

右クリックによるキャンセルを許可するには、cancel を追加します。

@gui file.txt cancel

GUI定義ファイルを書く

GUI定義ファイルを書き始めるには、拡張子が .txt であるファイルを作成します。例えばメインメニューファイルであれば menu.txt とします。 ファイルの先頭にコメントを入れ、何の目的のファイルなのか(例えば「メインメニュー」)を記述することは、よいやり方と言えます。(ゲーム中では見えません)

###
### GUI Definition for Main Menu Screen
###

GUIは画像を元にしたインタフェースである点で @menu と同じですが、@menu と異なり、@gui では、独立したGUI定義ファイルが用いられます。 GUIを作成する最初の一歩は、idle, hover, active の3つの画像を定義することです。 画像の定義は global { } で囲んで、GUI定義ファイルの先頭に置いておくと、Suika2が自動的に画像をロードしてくれます。

idle 画像はデフォルトで表示される画像で、ユーザがマウスでポイントしていないときに表示されます。

# Basic Settings
global {
# Use these images
idle:   menu-idle.png;
hover:  menu-hover.png;
active: menu-hover.png;
}

なお、active を必要としないボタンもあるため、hoveractive に同じ画像を指定してしまうこともできます。

GUI定義ファイルでは、ゲーム開発者は、ボタンとその属性である 機能, 位置, サイズ, 効果音 を定義する必要があります。 このため、ボタンは一目で分かる明確な構造を持っており、GUI定義ファイルを @menu に代わるよい方法と考える人が多いのです。 ボタンはボタンの名前に囲まれています。この場合は START { } です。 x, y, width, height は単位がピクセルです。

START {
# Jump-to-label type
type: goto;

# Jump to label
label: START;

# Position and size
x: 2;
y: 495;
width: 314;
height: 192;

# Sound effect when pointed
pointse: btn-change.ogg;

# Sound effect when clicked
clickse: click.ogg;
}

上の例では START というボタンを定義しています。このボタンは押されると START ラベルに実行を移します。 2つの異なる効果音、btn-change.oggclick.ogg が指定されていますが、これらはマウスでポイントされたときと、クリックされたときに、それぞれ再生されます。 メニューを完成させるには、同様に他のボタンを追加してください。

高度なGUIファイル

Suika2は、上記のような簡素なGUIだけでなく、コンフィグ画面、セーブ画面、ロード画面、履歴画面といった、たくさんの高度なGUIを実現可能です。 これらのGUI定義ファイルは、一般的なメニューではなく、システムのメニューを実現するのに用いられます。 このような高度な機能を活用するには、GUI定義ファイルを一から書き起こすよりは、サンプルを書き換えて作成することをお勧めします。

←スクリプトとコマンド  Suika2 Pro for Creators→