Choose your operating system:
Windows
macOS
Linux
プログラミング用語がよく分からない場合は、配列を単一エンティティ内に格納された同じ型の変数群とお考えください。例えば Float 配列は Float 変数のみを保持することができます。作成後の配列の修正は、配列内の個々の変数にアクセスする個別修正、または配列内のすべてのアイテムの一括修正があります (一括修正は一度にすべてを処理するため個別修正による繰り返しタスクを大幅に削減します)。
このページでは、ブループリント内で配列の変数を作成する方法および Make Array ノードを使用して配列を作成する方法について学習します。配列の作成方法を理解したら、配列で作業するサンプル使用例として「配列の使用例」セクションをご覧ください。
詳しい説明と使用方法については「ブループリントの配列」および「配列ノードを参照してください。
配列変数
配列変数を作成するには以下の手順に従います。
ブループリント内で [Add Variable (変数を追加)] ボタンをクリックし、変数に名前を付けて変数の型を設定します。
ここでは、「TextArray」 と呼ばれる Text 変数を作成しました。
変数の [Details (詳細)] パネルで [Variable Type (変数の型)] の隣にある 配列 グリッド ボタンをクリックします。
変数が配列に変換されます。
[Compile (コンパイル)] ボタンをクリックします。配列にアイテムを追加するには、[Default Value (デフォルト値)] の下のゴミ箱の隣にある + 記号をクリックします。
配列にお好きな数だけ要素を追加し、その値をインデックスに代入できます。
例として、最初のエントリを Hello! に、2 番目のエントリは GoodBye! に、そして 3 番目のエントリを ... に設定した Text Array を作成しました。この例は、セットアップした任意の条件に基づき様々なテキストでプレイヤーに反応するノンプレイヤー キャラクター (NPC) で使用できます。
前の画像からわかるように、配列は ゼロ基点 のインデックス値を使用します。これは、最初のインデックスが 1 ではなく 0 (ゼロ) であることを意味します。配列を埋める場合には上記に注意してください。インデックス値で配列のアイテムにアクセスするので、最初のアイテムにアクセスする場合はインデックス値は 1 ではなく 0 (ゼロ) を入力する必要があります。配列の 2 つ目にはインデックス 1 を入力します。以降、同様です。
配列変数を作成する
配列変数を作成する場合、変数の Default Value 設定を介して配列に現れるアイテムを定義します。ランタイムに配列が追加される場合があるかもしれません。例えば、レベルに存在するアクタを配列に追加するなどがあります。この場合、配列変数を作成し、デフォルト値を割り当てる代わりに Make Array ノードを使用して一連のアイテムから配列を作成することができます。
この例では、循環可能な Camera アクタの配列をレベルに用意することを想定します。
Make Array ノードは以下のステップで使用します。
レベル内にいくつかのアクタを配置後 (この例では Camera アクタ)、そのすべてを選択し、Level ブループリント を開きます。
グラフ内で 右クリック し、[Add Reference to Selected Actors (選択したアクタに参照を追加する)] オプションを選択します。
配列に含めるアクタへの参照ができたらグラフ内で 右クリック し、Make Array ノードを追加します。
Make Array ノード上で + 記号をクリックし、配列に現れるアクタのそれぞれに必要な数のピンを追加します。
アクタのひとつからドラッグしてそれを Make Array ノード上の 0 (または任意の他のピン) に接続します。
これで配列が選択したアクタに対する配列の型に変換します (コンパイルするとエラーメッセージは消えます)。
残りのアクタを、 Make Array ノードの残りのピンに接続します。
Array ピンを引き出して、Get ノードを探して追加します。
Get ノード上のボックスにある値は Make Array ノードからアクセス (Get) する Index (配列要素) です。
これは以下で Get Camera と呼ばれる変数として示される Integer 型 変数でもあります。
何らかの形式のスクリプトを通して、Get Camera を整数値に Set し、どの Camera Actor が Get ノードで選択されるかを効果的に変更できます。以下では、このセットアップを使用してレベルに配置された Camera アクタ間の循環を操作できます。
配列の使用例
この例では、配列を使用してスポーンし、ランダムな位置でレベル内でランダムなブループリント効果を得ます。
ここでは スターター コンテンツ を有効にした状態で Blueprint Third Person Template** プロジェクトを使います。
プロジェクトの [Basic] タブにある [Modes] メニューから、Target Point 5 つをレベルにドラッグします。
これはエフェクトをスポーンする位置になります。
ワールド アウトライナー で Target を検索します。 Shift を押したままの状態ですべてのターゲットポイントを選択します。
メイン ツールバーで [Blueprints] ボタンをクリックして、次に [Open Level Blueprint (Level ブループリントを開く)] を選択します。
グラフ内で 右クリック し、[Create References to 5 selected Actors] オプションを選択します。
これでレベル内の各ターゲット ポイントに対する参照が作成され、アクセスできるようになります。
グラフ内で再度 右クリック して、Make Array ノードを探して選択します。
Make Array 上の + 記号を 4 回クリックし、ノードにピンを追加し、ターゲット ポイントを接続します。
グラフ内で 右クリック して、F キー イベントを追加し、Pressed ピンから Spawn Actor from Class ノードを追加します。
[MyBlueprint] ウィンドウで、新規に Actor クラス型の変数を作成します。
変数を 「ActorClassArray」 と名前を付けて、Array グリッド アイコンをクリックして変数を配列にします。
[Compile] をクリックして [Default Value] セクションで 3 つのアクタを追加します (Fire、Explosion、Spark のエフェクトを使用します)。
Control キーを押した状態で ActorClassArray 変数内からドラッグして Get ノードを追加します。
Index ピンから、 Random Integer in Range ノードを探して追加します。
Max 設定を 2 に設定します。Get ピンを Spawn Actor ノードの Class ピンに接続します。
Max 設定を 2 にしたのは、インデックス値が 0 から始まるため、2 に設定することでアクタのそれぞれを get できるからです。
Make Array ノードの out ピンからドラッグして、Get ノードを追加します。
Index ピンから、Max を 4 に設定した状態で Random Integer in Range ノードを探して追加します。
Get ピンから、 Get Actor Transform ノードを探して追加します。
Get Actor Transform の Return Value を Spawn Actor ノードの Spawn Transform ピンに接続します。
[Compile] ボタンと [Save] ボタンをクリックするとグラフは以下のようになります。
ブループリントを閉じて、[Play] ボタンをクリックしてエディタで再生します。
エディタで再生すると、F キーを押すたびにブループリントがランダムに選択され (配列に追加したものの中から選択)、ターゲット ポイントの配列からランダムな位置でスポーンされます。F キー イベントでアイテムをスポーンする代わりに、またスポーンされるエフェクトの代わりに、同じロジックを使用して、プレイヤーが得ることができる Health や Ammo (銃弾) のピックアップ、またプレイヤーが得ることができる Loot (略奪品) などランダムなスポーン位置をセットアップできます。