【Godot4】タイトル画面のテンプレートを作成した
デフォルトだと味気ないですが、その分柔軟(なはず)です。
はじめに
Godotに限った話ではありませんが、ゲームを作るときに地味に手間なのが、ゲームとして体裁を整える作業です。特にミニゲームのようなコンパクトな作品だと、ゲームロジックを作る時間とタイトル画面や設定画面を作る時間が同じくらいなんてこともあると思います。そこで、すぐに使えるタイトル画面のテンプレートを作成しました。
作製したバージョンは4.4 dev3
ですが、新しい機能は使用していないので、4
以降であれば使えるはずです。
内容
このテンプレートには以下の仕組みが実装されています。
- タイトル画面
- シーン遷移、設定画面、クレジット画面、ゲーム終了のボタンがある
- 設定画面
-
Master
バスの音量調整スライダー
-
- クレジット画面
- Godotのライセンス表記
- ロード画面
- 画面・シーン遷移ボタン
各機能は基本的には独立しているため、レイアウトの変更にも柔軟に対応しています。
解説
コンポーネント
SoundPlayButton
AudioStreamPlayer
を指定して、ボタンが押された際にその音声を再生するボタンです。TransitButton
とLoadSceneButton
の親クラスです。
TransitButton
画面遷移を行うボタンです。遷移前と遷移後のTransitableControl
を指定し、interval
秒待機して画面を切り替えます。
LoadSceneButton
scene_path
で読み込み先のシーンのパスを指定します。ロード画面を表示し、非同期でシーンを読み込つつローディングバーを表示し、読み込みが完了したらシーンを切り替えます。
QuitButton
押されるとquit
を実行するボタンです。音を再生してもプロセスが終了し再生されないので、SoundPlayButton
を継承していません。
TransitableControl
TransitButton
によって画面遷移できるControl
です。スケールや位置、時間を指定してアニメーションさせることができます。Control
を継承した他のノードにアタッチすることでも使用できます。遷移アニメーション中は子に存在する全てのボタンが無効になります。
AudioVoulmeSlider
指定されたバスの音量を設定するスライダーです。
Slider
を継承しているためノードとして追加することができず、HSlider
またはVSlider
にアタッチして使用する必要があります。
LoadingProgressBar
後述するLoadingScreenSingleton
を指定し、読み込み状況を表示します。範囲を0~1
にする必要があります。
AudioVolumeSlider
同様、HSlider
またはVSlider
にアタッチして使用します。
シングルトン
LoadingScreenSingleton
LoadingScreen
という名前でAutoloadに登録されています。別のプロジェクトで用いる場合はloading_screen.tscn
を手動で登録する必要があります。
loading_screen.tscn
のLoadingControl/ColorRect
のMaterialからトランジションの設定の境界やルールテクスチャを設定することができます。
デフォルトの物が不満であれば、こちらで高品質なルールテクスチャを入手できます。感謝。
使い方
title_ui_template
をそのまま使用するプロジェクトへ移し、loading_screen.tscn
をLoadingScreenとしてAutoloadに登録することで使用できます。各コンポーネントはノードとして追加するか、該当のノードにアタッチすることで使用できます。
おわり
ゲームジャムなど、リソースの少ない開発場面ではタイトル画面や設定画面の作成は地味にコストがかかります。車輪の再開発にならないよう、ぜひ活用してください。
Discussion