UE4の勉強記録

UE4の勉強の記録です。個人用です。

「Unreal Engine4.xを使用してRPGを作成する」の3章の3.4を勉強する part 9

<前文>

f:id:kazuhironagai77:20190804200002p:plain

今週は前文はなしです。

<本文>

<目的>

3章3節の5、ターン制の戦闘(turn based combat)の6、ゲームオーバーの画面の作成(Creating the game over screen)を勉強します。

<方法と結果>

<Step.0>

Ch2を使用します。

<Step.1>

スクリーンそのものをまず作成します。

  1. 新しいウィジェットブループリントを作成しGameOverScreenと名付けます。
  2. フルスクリーンのアンカーを持つイメージを一つ作成します。
  3. Detailパネル内でオフセットを0にします。
  4. カラーを黒にします。
  5. 更に、テキストブロックにGame Overのテキストと、Restartとボタンのテキストに記されているボタンと追加します。

とありました。

大体、言っている事は分かりますが、一応サンプルコードで確認しながら作成します。

まずGameOverScreenをWidget Blueprintから作成しました。

f:id:kazuhironagai77:20190804200057p:plain

フルスクリーンのアンカーを持つイメージを作成しました。

f:id:kazuhironagai77:20190804200117p:plain

Detailパネル内でオフセットを0にしました。

f:id:kazuhironagai77:20190804200133p:plain

カラーを黒にしました。

f:id:kazuhironagai77:20190804200152p:plain

更に、テキストブロックにGame Overのテキストと、Restartとボタンのテキストに記されているボタンと追加しました。

f:id:kazuhironagai77:20190804200213p:plain

<Step.2>

RestartボタンのためにOnClickイベントを作成します。

ブループリントグラフ内でボタンのイベントをGet Game ModeがターゲットであるRestart Gameボタンにリンクします。

f:id:kazuhironagai77:20190804200248p:plain

少し教科書のサンプルともサンプルコードの例とも違うのですが、上に示す形で作成しました。

<Step.3>

マウスのカーソルをここに表示する必要があります。

  1. Event Constructから始め、Get player controllerターゲットとするSet Show Mouse Cursorをリンクします。
  2. Show Mouse Boxをチェックします。
  3. Event ConstructとSet Show Mouse Cursorの間に2秒の遅れをセットします。

以下に示すように作成しました。

f:id:kazuhironagai77:20190804200331p:plain

<Step.4>

次にRPGGameMode.h内で、ゲームオーバーに使用するためのウィジェットタイプのパブリックプロバティを追加します。

追加しました。

  1. ゲームオーバーの場合、ウィジェットを作成します。
  2. そしてそれをViewportに追加します。
  3. それはTick関数内にIf(combatOver)条件内にネストした条件として追加出来ます。

教科書のサンプルコードのままにTick関数内に追加しました。

f:id:kazuhironagai77:20190804200424p:plain

PrePareReset()関数はこれから作成するそうです。

<Step.5>

RPGGameInstance.hのパブリックなメンバー関数としてPrepareReset()関数を作成します。

はい。

f:id:kazuhironagai77:20190804200452p:plain

しました。

<Step.7>

これをテストするのにゴブリンのHpをプレイヤーより高くします。

Enemiesのテーブルを開きゴブリンのHPを100より高くします。

そしてエンカウンターを開始し、プレイヤーが死ぬまでプレイします。

するとGame Overのスクリーンが現れ、Restartをクリックするとゲームがもう一度開始します。

とありました。

ではテストしてみます。

以下に示すようにデータテーブルのEnemiesを開きGoblinのMHPを200に設定しました。

f:id:kazuhironagai77:20190804200524p:plain

プレイヤーが死ぬまで戦闘を継続するとGame Overの画面が表示されました。

f:id:kazuhironagai77:20190804200548p:plain

Restartボタンをクリックすると最初の画面に戻りました。

f:id:kazuhironagai77:20190804200607p:plain

プレイヤーのHPが最初に戻っているかどうかは不明です。

f:id:kazuhironagai77:20190804200630p:plain

もう一度戦闘画面に入って見ると両方ともHPは初期値に戻っていました。

テストは成功しました。

<考察とまとめ>

とうとう3章を終わらせる事が出来ました。3章の勉強を始めたのが今年の4月からなのでほぼ4カ月かかりました。ので今回は3章の総括を行います。

まず自分の書いたブログを読み直しました。基本的に読みにくいですが、毎週書くためには推敲を完璧にする訳にもいかないので、まあしょうがないです。しょうがないですが2つだけちょっと直したい処を書いておきます。

  • 何に対して語っているのかが分からない場合が沢山ありました。そのブログを書いていた時は、自明の事だったので多分書かなかったのでしょうか、後から読むと何が目的でそれに対して何を語っているのかが不明です。
  • 教科書に書かれている通りにコードを書いたらエラーになってしまった時に、エラーになった。以下の部分を変えた。直った。しか書かれていないと、後から読むと???となってしまいました。

限られた時間内で行う以上完璧に直すのは無理ですので、基本的にはしょうがないですが、時間がある時には、目的や疑問ははっきり書いておく。エラーを直した時は、どんなエラーだったのか、直す方法はどのように見つけたのか、それを試してどうだったのか、などを心がけたいと思います。

次に教科書の3章に対するそれぞれのブログを表にしました。

f:id:kazuhironagai77:20190804200659p:plain

表にして気が付いたのですが、ブログに振っていた数字が間違いだらけでした。例えば3章の3.4と言って3章の4節を指しています。更に、「「Unreal Engine4.xを使用してRPGを作成する」の3章の3.4を勉強する part 5」と言う題が二つもありました。勿論内容はそれぞれ別の話です。これは直せばすぐに直せるのですが、このブログは正しい情報を発信するのが第一の目的ではなく、私がその時に勉強した内容を理解した限りでなるだけ正確にまとめるのが目的なので過去にさかのぼって直す事はしません。

このように、沢山の間違いや問題が存在していましたが、後でまとめるための資料としては十分なのでこれからも続けていこうと思います。

ブログを読み直したらそれだけで時間を使い切ってしまい、総括する余裕がなくなってしまいました。今週はこれで終わりです。