(動画チュートリアル関連) 配列とはどのような場合に必要となりますか?

配列を使わなければならない場合とはどのような場合でしょうか?

たとえば、ゲームのキャラクターにパラメータを作ったとします。隠しパラメータなのでそれぞれの変数の名前は割りと無味乾燥な名前にしてもいいかと思い、次のようにしたとします。

  • Parameter1 (初期値: 111)
  • Parameter2 (初期値: 222)
  • Parameter3 (初期値: 333)
  • Parameter4 (初期値: 444)
  • Parameter5 (初期値: 555)

そして、キャラクターが階段を登るとこれらのパラメータの値が +1 されるようにします。

たとえば、Parameter1 に初期値は 111 ですが、階段を登ると 112 になります。そのためには、次のようなグラフを組みます。

(必ずしも PrintString で表示する必要はないのですが、説明のためにこうしています。)

さて、これを Parameter5 まで行うようにするためには、次のようなグラフを作らなければなりません。

これはひどい。とても大変です。 もしも Paramerter30 まであるなら事態はもっと悲惨なことになります。 そこで、配列を使うことにします。

配列名は Parameters にします。+ のアイコン (画像では青枠部分) を使って、5 つの要素を作ります。ただし、 配列の番号 (インデックス) は 0 から始まります。そこは要注意です。 初期値は先ほどの例とは異なるようにするために次のようにしました。なお、[0] や [1] は、説明上インデックスを付けたにすぎません。

  • Parameters[0] (初期値: 1111)
  • Parameters[1] (初期値: 2222)
  • Parameters[2] (初期値: 3333)
  • Parameters[3] (初期値: 4444)
  • Parameters[4] (初期値: 5555)

配列に新たな値をセットする場合、Loop を使うと次のようにすることができます。

このように配列にすると、たとえ、 パラメータの数がいくつに増えても、そのパラメータのためのノードを追加する必要はありません。配列の要素を + ボタンで追加するだけでいいのです。 ここが先ほどの例 (Paramerter30 など) とは最も異なる点です。つまり、ノード数は大いに節約されるのです。

実行内容は、まず、ActorBeginOverlap が発動すると (=キャラクターが階段の上にあるトリガーボリュームに入ると)、ForLoop が開始されます。すなわち、First Index の 0 から Last Index の 4 まで (つまり、全部で 5 回)、Loop Body につながっているノードが繰り返し実行されます。つまり、Set Array Elem (配列の要素に値をセットする) 関数が繰り返し実行されます (要素とは Parameters[2] や Parameters[4] などのこと)。この関数の Item (配列の要素に入れる値) には Parameters という配列の各 Item にプラス 1 したものを入れます。そして、それを PrintString で表示します。ここまでが 1 回のループで実行されることです。

:arrow_forward:関連する動画チュートリアル Blueprint Essentials – 9 – For Loops

:arrow_forward:関連する動画チュートリアル Blueprint Essentials – 12 – For Each Loop

:arrow_forward:関連する UE4 ドキュメンテーション 『配列ノード』

:arrow_forward:関連する UE4 AnswerHub スレッド (動画チュートリアル関連) 変数のセットに同じ変数のゲットがつながっているのはなぜ?

なお、以上のことを ForEachLoop (各配列についてループする) を使って実現すると、次のようになります。

Loop の First Index と Last Index の代わりに、Array という入力ピンがあります。これに当該の配列をつなげると、配列の最初の Index と最後の Index が自動的に認識されて、「各配列について」ループが実行されます。