Language:
Page Info
Skill Level:
Engine Version:

Blueprint Maps

アンリアル エンジン 4.15 がリリースされ、Map コンテナ タイプがアンリアル エンジン 4 (UE4) の Blueprint Application Programming Interface (API) に追加されました。 コンテナという用語を知らない場合、アイテムにラベル付けをして、すぐに (または後で) 使うために入れて置くストレージ ボックスだと考えてください。Arrays を使って格納してアイテムのコレクションを使って作業したことがあれば、 UE4 の Blueprint コンテナを既に使っています。例えば、Array を使って後で使うアイテムを格納する場合、そのアイテムのラベルは配列内の位置になります。ラベルを使ってコンテナ内のアイテム位置を示す点で Map は Array と似ていますが、 Map のラベルは Array で使用するラベルとは異なります。Array を使う場合、ラベルはコンテナのアイテムのシーケンス インデックスですが、 Map の場合、ラベルはコンテナのアイテムと関連づいたキーとなります。それぞれのキーを使ってコンテナ内のアイテムを関連づけが可能なので、デベロッパーはクリエイティブな方法で Map を活用することができ、Map の追加でブループリント API のは一層パワフルになります。

Blueprint Maps は Array の次に UE4 では人気のあるコンテナなので、Blueprint API との相性は抜群です。デベロッパーは関連付けられたキーを使って、効率的にアイテムの検索と抽出ができるため、 Map はとても人気があります。Array と Set と非常によくにて、Blueprint Map もゲーム開発において様々な用途があります。

本ページでは、Blueprint Map の作成および編集方法を学習します。プロジェクトで Map の最大限の活用に役立てるために、Map のプロパティについても説明します。

図説の便宜上、Blank Blueprint Project (下図の黄色枠部分) を使ってBlueprint Map の作成および編集方法の説明を行います。

クリックしてフルサイズで表示

Map の作成

Blueprint Map を新規作成するには、以下の操作を行います。

  1. 作業用 Blueprint クラスがまだない場合は、Blueprint クラスをプロジェクトに 追加 してください。

    クリックしてフルサイズで表示

  2. [Pick Parent Class (親クラスを選択)] メニューに表示されているクラスリストから [Actor] を選択します。

    creatingMaps_Step2.png

  3. Actor クラスに名前を付けたら、コンテンツ ブラウザ 内でそのアクタをダブルクリックして開きます。

    クリックしてフルサイズで表示

  4. そのアクタのブループリント スクリプトの編集を始めるために [Event Graph] タブを選択します。

    クリックしてフルサイズで表示

  5. アクタの Event Graph を開いたら、[Variables (変数)] サブメニュー上にカーソルをあてて [+ Variable] ボタンを表示させます。

    クリックしてフルサイズで表示

  6. 次に String 変数を作成し、MyStringIntegerMap と名前を付けます。

    クリックしてフルサイズで表示

    変数名はやや杓子定規的な感じがしますが、変数名の MyStringIntegerMap の場合、Map が Integer 型の値と関連付けられた String 型キーを持つことを説明している点に注目する価値はあります。

  7. いま、MyStringIntegerMap は単一の String 変数の状態です。MyStringIntegerMapMap コンテナに変換するには、アクタの [Details (詳細)] パネルの Variable Type ラベルの右側にある **[Variable Type (変数タイプ)] ボタンをクリックします。

    クリックしてフルサイズで表示

  8. ここでドロップダウン メニューの中に 4 つのコンテナ オプションが表示されます。次のオプションを選択して MyStringIntegerMap を Blueprint Map に変換します。

    creatingMaps_Step8.png

MyStringIntegerMapVariable Type を見て、Map のキーは String、値は Integer であることを確認してください。

creatingMaps_Step9.png

Map の編集

新規作成された Map を編集する前に、Map 変数コンテナをカプセル化するブループリントをコンパイルしなければなりません。

クリックしてフルサイズで表示

  1. MyStringIntegerMap を編集するには、ブループリントの [Compile] ボタンをクリックします。

    クリックしてフルサイズで表示

  2. ブループリントをコンパイルすると、Map の [Default Value (デフォルト値)] ([Details (詳細)] パネル内) に MyStringIntegerMap が空であることが表示されます。

    クリックしてフルサイズで表示

  3. キー/ 値のペアを MyStringIntegerMap に追加するには、[Details (詳細)] パネルの [Default Value (デフォルト値)] メニューの [0 Map elements] の横にある[+] ボタンをクリックします。

    creatingMaps_Step13.png

  4. [+] ボタンをもう一度押してください。

    creatingMaps_Step14.png

    キー / 値のペアのデフォルト キーを更新せずにキーを Blueprint Map に追加しようとすると、アンリアル エディタが警告を出します。
    Step14_Warning.png

  5. 以下の画像と同じになるように、値 / キーのペアを 3 つ MyStringIntegerMap に追加します。

    creatingMaps_Step15.png

  6. さらにキー/ 値のペアをもう 1 つ追加して、名前を Banana と付けます。

    creatingMaps_Step16.png

    重複したキーを Blueprint Map に追加しようとすると、アンリアル エディタが警告を出します。値の重複が許されても、キーは重複できません。 Step16_Warning.png

  7. 上記の警告を念頭に置いて、4 つ目のキーに Date という名前を付けて、値を 2 に設定してください。

creatingMaps_Step17.png

よく出来ました!これで 4 つ目のキー / 値を追加および編集した Blueprint Map が新規作成されました。

コンテナのプロパティ

UE4 で Blueprint Map コンテナを使って作業を開始する場合は、以下のプロパティ一覧を参照してください。

  • Map のキーはユニークでなければなりません。

  • Map のすべてのキーは定義 (初期化) されていなければなりません。

  • 現在、Blueprint Map では、キー / 値のペアは 1 つだけしかサポートしていません。

  • Map 内で関連づけられたキーを使った値のの追加、削除、検索は高速演算です。

  • 現在、Map 値は変更不可能です。つまり、作成後の変更は不可能です。

  • キー型は値型とは異なる場合がありますが、Map 内のすべてのキーと値は同じ (同じ型) です。別の言い方をすると、特定の Map のキーが Integer 型に指定された値をもつ String 型と指定された場合、後続のすべてのキーは String 型になり、後続のすべての値は Integer になります。

本ページではブループリントでの Map の作成および編集方法を学習しました。Blueprint Map ノード インターフェースの詳細は、Blueprint Map ノード リファレンス ガイドを参照してください。