🤟

【Godot4】タイトル画面のテンプレートを作成した

2024/11/08に公開


デフォルトだと味気ないですが、その分柔軟(なはず)です。

はじめに

Godotに限った話ではありませんが、ゲームを作るときに地味に手間なのが、ゲームとして体裁を整える作業です。特にミニゲームのようなコンパクトな作品だと、ゲームロジックを作る時間とタイトル画面や設定画面を作る時間が同じくらいなんてこともあると思います。そこで、すぐに使えるタイトル画面のテンプレートを作成しました。

作製したバージョンは4.4 dev3ですが、新しい機能は使用していないので、4以降であれば使えるはずです。

内容

このテンプレートには以下の仕組みが実装されています。

  • タイトル画面
    • シーン遷移、設定画面、クレジット画面、ゲーム終了のボタンがある
  • 設定画面
    • Masterバスの音量調整スライダー
  • クレジット画面
    • Godotのライセンス表記
  • ロード画面
  • 画面・シーン遷移ボタン

各機能は基本的には独立しているため、レイアウトの変更にも柔軟に対応しています。

解説

コンポーネント

SoundPlayButton

AudioStreamPlayerを指定して、ボタンが押された際にその音声を再生するボタンです。TransitButtonLoadSceneButtonの親クラスです。

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.tscnLoadingControl/ColorRectのMaterialからトランジションの設定の境界やルールテクスチャを設定することができます。

デフォルトの物が不満であれば、こちらで高品質なルールテクスチャを入手できます。感謝。

使い方

title_ui_templateをそのまま使用するプロジェクトへ移し、loading_screen.tscnをLoadingScreenとしてAutoloadに登録することで使用できます。各コンポーネントはノードとして追加するか、該当のノードにアタッチすることで使用できます。

おわり

ゲームジャムなど、リソースの少ない開発場面ではタイトル画面や設定画面の作成は地味にコストがかかります。車輪の再開発にならないよう、ぜひ活用してください。

Discussion