ゲームのメインメニューの作成



こんにちは、私の名前はドミトリーです。 私は趣味としてアンリアルエンジンでコンピューターゲームを作っています。 ゲームを開発するとき、私たちはそれぞれ、設定を行ったり、ゲームモードを選択したりできるゲームメニューを作成する必要に直面しています。 この記事では、この問題をどのように解決したかを示します。 いつものように、すべてのソースは記事の最後に表示されます。

すべてのコードをプラグインにまとめました。 プラグインをプロジェクトにコピーしたら、MainMenuPluginHUDから派生したクラスである新しいHUDクラスを作成する必要があります。 このクラスを通じて、すべての制御が実行されます。 その設定は次のとおりです。

TextScale、MarkColor、MarkLenght-レーダーの情報を表示するパラメーター。

SoundClass-設定には音量レベルがあるため、ここで、制御するサウンドがアタッチされるSoundClassを配置する必要があります。

MainMenuMapName-メインメニューが表示されるレベルの名前。 つまり、このレベルをロードすると、MainMenuモードが有効になり、残りのレベルにはGameScreenモードが含まれます。

次は、特定のメニューモードを担当するウィジェットのリストです。

GameScreenWidget-ゲーム画面に表示されるウィジェット。

MainMenuWidget-ゲームの開始時に表示されるメインメニュー。

GameMenuWidget-ゲーム中に表示されるメニュー。

SettingsMenuWidget-ゲーム設定メニュー。

KeyBindMenuWidget-キー割り当てメニュー。

TitlesMenuWidget-タイトルメニュー。

ControlWidget-ゲームの制御を説明する画面。

すべてのウィジェットはプラグインのコンテンツフォルダーにあります。表示されない場合、「プラグインコンテンツの表示」オプションは削除されます。

さらに、次の機能があります。

SetMainMenuMode-パラメーターがEMainMenuModeを受け取るときに、現在のメニューモードを設定します。

GetMainMenuMode-現在のモードを取得します。

ゲームメニュー呼び出し
画像


すべてのメニューモードは、MainMenuMode.hファイルで説明されています。 新しいモードを追加するか、古いモードを削除する必要があります。

ButtonClickおよびGetButtonName-ボタンが機能するために必要です。 ボタンにはEMainMenuPluginButtonType変数が含まれており、ボタンまたはそのスポーンをクリックすると、対応する関数がこのパラメーターで呼び出されます。

すべてのボタンは、MainMenuPluginButtons.hファイルで説明されています。 そこにもボタンを追加および削除する必要があります。

SetPropertyInt、GetPropertyInt、GetPropertyNameInt-SIntProperty_Wigetウィジェットについても同様です。 このウィジェットは、設定メニューに整数を表示するように設計されています。 Intパラメーターに加えて、boolとfloatもあります。

すべてのパラメーターは、MenuSettingsProperty.hファイルで説明されています。

HUDに加えて、MainMenuGameInstanceから派生したGameInstanseクラスを作成する必要があります。 Game instanseが機能するには、ProjectSettings-> Maps&Modes-> GameInstanseClassで選択する必要があります。 これにより、ロード画面を表示できます。 (ビューポートでゲームを開始すると、ロード画面は機能しません)

GameInstanseには2つのパラメーターしかありません。

LoadingScreenWidget-ロード時に表示されるウィジェット。

LogoMovie-ロゴ付きのビデオクリップの名前(許可なし)。 クリップは、プロジェクトの他のフォルダーのContent / Moviesフォルダーにある必要があります。配置することはできません。 ビデオには必ず720pの解像度と25fpsのフレームレートが必要です。そうしないと、UEsはそれを再生できません。Epics自体が1080pと60fpsでWebサイトにロゴをアップロードするという事実を考えると、これは奇妙です。

以上です。

プラグインをダウンロードするためのリンク

ビデオデモンストレーション



更新する



HUDのすべてのコードをアクターコンポーネントにパックしました。HUDをMainMenuPluginHUDから派生させる必要はありません。 UMainMenuPluginHUDComponentコンポーネントをHUDに追加するだけです。
画像

Source: https://habr.com/ru/post/J354196/


All Articles