ケースアドレス: https://www.unrealengine.com/marketplace/zh-CN/product/simple-menu-ui
このデモはシンプルで基本的な構造を持っており、学習を開始するために使用できます
1.UE5の入り口
1) 最初に Project-Maps&Modes を確認し、デフォルトのスタートアップ Map、GameMode、および GameInstance を見つけます。さらに、入力設定も確認する必要があります。
2) UE5 プログラムが開始すると、GameInstance、GameMode、およびデフォルトのマップがデフォルトで開始されます。
- 次に、マップ内の LevelBlueprint プログラムがデフォルトで実行され、マップの WorldSettings で、バインドされた Pawn、HUD、PlayerController... も呼び出されて実行されます。
- さらに、GameMode プログラムが起動し、バインドされた Pawn、HUD、PlayerController... を実行します (通常、バインドするマップまたは GameMode 内の場所を選択します)。
- SimpleMenuUIv3、Level_MainMenu の LevelBlueprint、および Blueprint_GameInstance への入り口が 2 つあります。
GameInstance、GameMode、PlayerController の説明:
- GameInstance は、すべての GameMode などにわたってグローバル変数または関数を設定することであり、最高レベルとして理解されます。
- GameMode は、特定のマップまたは特定のゲーム モードで変数または関数を設定し、このモードですべてのキャラクター スクリプトをクロスドメイン化することです。
- ゲームの主人公は非常に重要であり、オブジェクト指向の考え方に基づいているため、PlayerController はキャラクター スクリプトです。このようなスクリプトでは、多くの場合、このオブジェクトの関数と変数が多数あります。
- GameInstance->GameMode->PlayerController は、レイヤーごとの管理構造を形成します。
要約:
- UE5 の入り口では、GameInstance (カスタム)、GameMode (カスタム)、LevelBlueprint を確認し、カスタム Pawn、HUD、PlayerController などを見つける必要があります。
- UE5 のプログラミングの考え方はオブジェクト指向の考え方であり、他の Actor オブジェクトは通常、エントリ プログラム呼び出しまたはその他のイベント呼び出しを待ちます。
2. ブループリントが LevelBlueprint を起動します
- ケースは、GameInstance を取得する GameInstance に UMG の操作を記述し、LoadSettings と ShowOpeningWidget の 2 つのイベントを開始します。
3. グローバル ブループリント Blueprint_GameInstance - UI オープン (UI オープン/開始)
1) UI を開くためのいくつかの重要なポイント: ウィジェットを作成するかどうかの決定、UI を作成するためのウィジェットの作成、ビューポートを追加するための AddToViewport、マウスを表示するかどうかを設定するためのマウス カーソルの表示、入力モードの設定...入力モード。
2) Show Opening Widget でホームページが開きます
- Bool 値に応じて、開始スタンバイ ページまたは MainMenu メイン メニュー ページのどちらを表示するかを決定します。
3) スタート画面を表示して待機ページを開く
- StartScreen が空の場合、ウィジェットを作成して保存 -> ビューポートに追加 -> マウス カーソルを表示 -> ブール値を設定; これらの手順は UMG の通常の操作です。
- Enter を押した後に StartScreen スタンバイ ページに入るか、MainMenu メイン メニュー ページに直接入るかを変更する bool 値
4) メインメニューを表示 メインメニューページを表示します
- Set Input Mode には、UI Only、Game Only、Game And UI の 3 種類があり、それぞれ、UI インターフェイスのみを制御するか、ゲーム インターフェイスのみを制御するか、または両方を制御することができます。
4. スタートページ Widget_StartScreen
- スタンバイ ページを開始し、Enter キーを押してメニュー ページに入ります
- ウィジェット グラフ
1)アニメーション:
- UI アニメーションを再生します。FadeLoop 呼吸光アニメーションがウィジェットに設定されています。デバッグ用のアニメーション コントロールを使用できます。
- 再生するには、グラフに追加する必要があります。
2) 入力アクション: Enter キーを押して、対応する入力を提供します。
- Listen for Input Action は、UMG 用に準備された入力応答です。テスト用に InputAction Enter を使用して実装することもできますが、このノードはより多くの機能を提供します。Consume Bool 値は、Callback が有効かどうかを制御できます。
次の応答 Enter が有効です
3) 親クラス: BaseWidget_AnimatedCanvas
- この場合のすべての UI の入口と出口には単純なアニメーションがあるため、関数はこの親クラスに抽象化されます。Animate_Out と Animate_In の 2 つのアニメーションを含む
- 呼び出し方:
- このウィジェットを初めて作成するとき、同時に親クラスのコンストラクトを呼び出します
- ページアウトの方法:
- 親ノードの Remove Widget イベントを呼び出してから、Instance の Show Main Menu イベント、親ノードの Remove Widget イベントを呼び出します。
- 最初に Animate Out アニメーションを再生し、アニメーションがイベント コールバックを完了した後、 親から
削除 親ノードから削除: このウィジェットを UI レイヤーの親ノードから削除します。つまり、ページを削除します。
Create Widget のオブジェクトは削除されず、Add to Viewport のみ表示されます。
4)親から削除を呼び出す:
Animation Finished には、バインド イベントをトリガーする "Remove from Parent"
Call 呼び出しと呼ばれる Event Dispatchers イベントがあります。しかし、ここには Call に対応する Bind が見つからないため、効果がないように見えます。そのようなプログラムがあれば、Call に応答できます。
5. メインページ Widget_MainMenu
- メインメニューページ
1) テキスト バインディング ゲーム インスタンス データ
- ページ Text は Bind を介してデータをバインドします。データは Game Instance -> GameInfo -> *、構造体 Struct_GameInfo から取得されます。
2) WidgeClass_Button ボタン クラス (プレハブ)
-
MainMenu のボタン、WidgeClass_Button クラスを使用
-
MainMenu で公開され、設定可能なボタン テキストと 2 つの色変数を作成します。
-
ボタン アニメーション、TextHover アニメーションの作成 (ズームイン)、Play Animation Forward と Reverse (ズームインとズームアウト) の再生、テキストの色の設定
-
デフォルト設定
-
アニメーション設定
イベント スケジューラを使用して Call On Click カスタム イベントをトリガーする
- それ以来、ボタンのテキストやその他の設定、アニメーション設定、およびプレス イベント インターフェイスが利用可能です。
3) クリック時にコール ボタン クリック コールバック
- Widget_MainMenu グラフで、Game Instance 変数を作成し、Event を On Click にバインドします。
- コールバック バインディング、ウィジェットの削除、およびゲーム インスタンスでの Show Singleplayer Menu イベントの実行
まとめ:UIはシンプルでロジックが使いやすいです、まずはここに来て、スムーズな開発をお願いします〜