UE4の勉強記録

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

「Unreal Engine4.xを使用してRPGを作成する」の5章、キャラクタースタティスティクスとの橋渡し(Bridging Character Statistics)

<前文>

f:id:kazuhironagai77:20190804200002p:plain

今週は、お盆なので軽くやります。

<本文>

<目的>

「Unreal Engine4.xを使用してRPGを作成する」の5章キャラクタースタティスティクスとの橋渡しをする(Bridging Character Statistics)を勉強します。

キャラクタースタティスティクス(Character Statistics)とは何だったんでしょう?何を指すのか今一覚えていません。キャラクターの持つ属性の事でしょうか?兎に角やって行きましょう。

<方法と結果>

<Step.0>

取りあえず、サンプルコードの5章を解凍しました。解凍後、特に問題なく起動しました。ビルドも成功しました。

今までと同じようにCh2を使用していきます。

<Step.1>

この章では、キャラクタースタティスティクス(Character Statistics)をポーズメニューにどのようにリンクするかを学びます。

<Step.2>

キャラクターのデータを得る(Getting character data)

4章で作成したポーズメニュー内のEditable_Soldier_HPにキャラクターからのHPのデータを表示します。

流石にこの手順か明白なので、その結果だけ表示します。

f:id:kazuhironagai77:20190818134728p:plain

キャラクターターゲットのデファルトが指定されていません。後から指定するのでしょうか?

f:id:kazuhironagai77:20190818134747p:plain

<Step.3>

プレイヤーのインスタンスを得る(Getting player instances)

キャラクターターゲットを指定します。

  • 正しいキャラクターターゲットをBP内で簡単にセット出来る。
  • ただしパーティメンバーをBPに公開しないで、キャラクターのデータをアサイン(assign)する事は出来ない。
  • ので、最初にhで現状のゲームのデータをBPで公開出来る様にコードを改良します。

しました。

f:id:kazuhironagai77:20190818134826p:plain

試しにビルドしてみます。

f:id:kazuhironagai77:20190818134847p:plain

普通に成功しました。

  • 作成されたもしくは追加された如何なるパーティメンバーをBP内に呼ぶ事が出来ます。
  • FieldPlayerBPから呼び出します。

教科書に書かれている通りに作成しました。

f:id:kazuhironagai77:20190818134924p:plain

Party Memberの配列の最初の要素がSoldierなので0を指定した場合、Soldierの値が取得出来るとありました。そこだけがちょっと設計に不安が残る部分です。

<Step.4>

ステータスの表示(Displaying stats)

  • いつ、CastToRPGGameInstanceを実行すべきでしょうか?
  • ポーズスクリーンが作成された直後が最もふさわしいと考えられます。

教科書通りにCastToRPGGameInstanceを繋げます。

f:id:kazuhironagai77:20190818135002p:plain

<Step.5>

テストします。

f:id:kazuhironagai77:20190818135025p:plain

しっかり表示されました。

<Step.6>

今度は、MPをセットします。やり方はHPと全く同じだそうです。

一応、サンプルコードで確認します。

f:id:kazuhironagai77:20190818135048p:plain

全く同じですね。それではMPを作成します。

f:id:kazuhironagai77:20190818135114p:plain

テストします。

f:id:kazuhironagai77:20190818135132p:plain

成功しました。

<Step.7>

次は名前を変更します。

f:id:kazuhironagai77:20190818135157p:plain

上記のように作成しました。

テストします。

f:id:kazuhironagai77:20190818135218p:plain

成功しました。

<Step.8>

次はPause Inventoryをやります。

f:id:kazuhironagai77:20190818135245p:plain

取りあえず、上記の内容のブループリントは作成しましたが、Character Targetがアサイン(assign)されていません。このウィジェットが作成されるPause_Main内でアサイン(assign)するのが最も適切かなと思いサンプルコードで確認してみると

f:id:kazuhironagai77:20190818135306p:plain

しっかりそこで、Character Targetがアサイン(assign)されていました。その通りに作成します。

f:id:kazuhironagai77:20190818135325p:plain

同様に作成しました。

テストします。

f:id:kazuhironagai77:20190818135342p:plain

出来ました。

他の部分も同様に作成しテストします。

f:id:kazuhironagai77:20190818135359p:plain

成功のようですね。

<Step.9>

Pause_Equipmentをします。

やり方は今までと全く同じなので、以下にテストの結果のみを示します。

f:id:kazuhironagai77:20190818135424p:plain

出来ているようですね。

<考察>

今回も非常に簡単でした。唯一気を付けなければならない事があるとすれば、前回の考察に基づいて考えると今回の作業は、プログラマーが担当すべき個所であると言う事です。