Set を使用して作業する

ブループリントでの Set の使用方法について学習します。

Windows
MacOS
Linux

workingWithSets_topicBanner.png

ブループリントの配列 はほどんどのデザイン シナリオで選択されるコンテナです。配列は、複製可能なアイテムの順序付きリストで、デベロッパーに順序付きの柔軟なコンテナを提供します。ただし、アイテムのプールを使用して作業を行うデベロッパーが懸念しているのは、プールに属する各アイテムの順序ではなく、デベロッパーがデータを引き出すプールに属するアイテムの一意性です。このような場合は、Blueprint Set が役立ちます。

このガイドを修了すると、ブループリント スクリプティング環境での Set の作成および編集、アイテムのクエリおよび表示、Unreal Engine 4 (UE4) での Blueprint Sets に対する Intersection (交差)、Union (結合) を含む、基本的な操作を実行できるようになります。

1.必要なセットアップ

Blueprint Set の使用を開始する前に、コンテナのコンテンツが表示されるようにプロジェクトを設定する必要があります。

  1. [Games] > 「First Person (ファーストパーソン)」テンプレートを使って、以下の設定で新規プロジェクトを作成します。

    • [Blueprint (ブループリント)] を有効にする。

    • [Maximum Quality] を有効にする。

    • [Desktop/Console (デスクトップ/コンソール)] を有効にする。

    • [With Starter Content (スターターコンテンツ有り)] を有効にする。

  2. プロジェクトに「ExampleSetProject」と名前を付けます。

  3. プロジェクトの コンテンツ ブラウザ で「Blueprint」フォルダをダブルクリックします。

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

  4. コンテンツ ブラウザ[Add New (新規追加)] ボタンをクリックして [Create Basic Asset (基本アセットを作成)] ポップアップ メニュー配下の [Blueprint Class] にカーソルを当てます。

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

  5. [Pick Parent Class (親クラスを選択)] メニューが開いたら、TextRender Actor ブループリント クラスを検索するために [All Classes] の矢印をクリックします。

    Step1_4.png

  6. 検索バー に TexRenderActor と入力して、TextRenderActor ブループリント クラスを選択して [Select (選択)] ボタンをクリックします。

    Step1_5.png

  7. この時点で、プロジェクトの コンテンツ ブラウザ には新規作成した TextRender Actor が配置されていることを確認します。この新規アクタに「DisplaySet」と名前を付けます。

    Step1_6.png

  8. DisplaySet TextRender アクタを Unreal Editor の Perspective (3D) Viewport にドラッグします。

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

  9. DisplaySet TextRender アクタを選択したら、[+ Add Component] ボタン ([Details (詳細)] パネル) をクリックして 検索バー に「Box Collision」と入力します。

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

  10. Box Collision Component を TextRender アクタに追加したら、新規コンポーネントに「Trigger Box」と名前を付けます。

    Step1_9.png

  11. 次に TextRender コンポーネントを選択して、[Details (詳細)] パネルでアクタの [Transform (トランスフォーム)] を表示します。

    Step1_10.png

  12. Display Set アクタの [Transform] を更新して、以下の値に反映させます。

    Step1_11.png

  13. 次に、Display Set アクタの [Horizontal Alignment (水平アラインメント)] を、デフォルト値の [Left (左)] 揃えから [Center (中央)] 揃えに変更します。

    Step1_12.png

  14. 現在 Trigger Box コンポーネントは [Hidden in Game (インゲームで非表示にする)] がオンになっています。[Details (詳細)] パネルの [Rendering (レンダリング)] メニューにある [Hidden in Game (インゲームで非表示にする)] チェックボックスのチェックを外せば Box Collision コンポーネントをインゲームで表示できます。

    Step1_13.png

    Box Collision コンポーネントをインゲームで表示すると、トリガーされたイベントを操作する基本ロジックが原因の可能性のある問題のデバッグに便利です。

  15. PIE (Play in Editor) モードに入ると、発射物に Display Set コリジョン ボックスに対するコリジョン反応があることがわかります。この時点で必要なのは、Display Set コリジョン ボックスに Set コンテナのコンテンツを表示できるイベントをトリガーさせることのみです。これを実行するため、[Details (詳細)] パネルにある [Collision] メニューの [Collision Presets (コリジョン プリセット)] ドロップダウン リスト ボックスをクリックして、[Custom...] オプションを選択します。

    Step1_14.png

  16. 最後に、以下の値を設定して、[Collision Presets (コリジョン プリセット)] を更新します。

    Step1_15.png

このセクションの結果

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

新規プロジェクトを作成し、新しい TextRender Actor の設定を行ったので、次のステップで作成、編集、表示する Blueprint Set コンテナのコンテンツが表示されるようになります。

2.Blueprint Set を作成して表示する

新規作成したプロジェクトに TextRender アクタを設定したので、次は Blueprint Set コンテナを作成し、それをインゲームで表示してみましょう。

  1. プロジェクトの コンテンツ ブラウザ から Display Set TextRender アクタをダブルクリックして、ブループリント イベントグラフ を開きます。

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

  2. 以下の画面が表示されたら、[Open Full Blueprint Editor (フル ブループリント エディタを開く)] リンクをクリックして開始します。

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

  3. Display Set TextRender アクタ ブループリントの イベントグラフ が表示されていることを確認します。このイベント グラフで Blueprint Set とその表示ロジックを追加することができます。

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

    上記画面が表示されない場合は、[Event Graph (イベント グラフ)] タブをクリックしてアクタのブループリント イベントグラフ エディタを開きます。

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

  4. 次に、後で表示する複数のアイテムを格納する Blueprint Set コンテナを作成します。新規の Blueprint Set を作成するには、([My Blueprint] パネルにある) [+ Add New] ボタンをクリックしてドロップダウン リストから [Variable (変数)] を選択します。

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

  5. 新しい変数に「Instruction Set」と名前を付けます

    Step2_5.png

  6. その変数の横にある ピン タイプ のボタンをクリックします。

    Step2_6.png

  7. 次にドロップダウン リストから [String (文字列)] 変数型を選択します。

    Step2_7.png

  8. [Details (詳細)] パネルの [Variable Type] ドロップダウン リストの横にある、その変数の コンテナ タイプ ボタンをクリックします。

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

  9. 次にドロップダウン リストから Set コンテナ タイプを選択します。

    Step2_9.png

  10. この時点で、コンテナ内に格納するアイテムを定義する前にブループリントのコンパイルをする必要があることをブループリント グラフから通知されます。そのまま [Compile] ボタンをクリックします。

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

    ブループリントをコンパイルすると、コンテナの [Default Value] メッセージがインターフェースに置き換えられ、String 型のユニークなアイテム (または要素) でコンテナを追加することができるようになります。

  11. これまでの作業を保存していない場合は、[Save] ボタンをクリックしてすべての作業を保存してください。

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

    通常、保存は早い段階で、こまめに行うことをお勧めします

  12. [Details (詳細)] パネルの[Default Value] メニューにある [+] (要素を追加) ボタンをクリックして、String 型のアイテムを新たに定義した Instruction Set コンテナに追加します。

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

  13. コンテナの新規アイテムを「Click」として定義します。

    Step2_13.png

  14. この 2 ステップを繰り返して、Instruction Set コンテナを以下のキー / 値のペアで作成します。

    Step2_14.png

ロジックのスクリプトを作成する

新しく作成した Blueprint Set のコンテンツを表示する前に、必要なロジックを書かなければなりません。

  1. これでコンテナを定義できたので、Instruction Set 変数をブループリント イベントグラフにドラッグします。

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

  2. Instruction Set ドロップダウン リストから [Get (ゲット)] を選択します。

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

  3. Instruction Set ノードを引き出して Map Utilities インターフェースから Find ノードを追加します。

    Step2_17.png

  4. To Array ノードを引き出して Get ノードに接続します。

    Step2_18.png

    何通りかの方法で Set からアイテムを取得することができます。特定のキーで Set を照会する方法やセット内のアイテムを介してイタレートする方法です。ここでは、Instruction Set を介してイタレートするためにカウンタ変数を使用します。

  5. この注意事項を考慮して、[+ Add New (新規追加)] ボタンをクリックし、ドロップダウン リストから [Variable (変数)] を選択します。

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

  6. その変数の型を Integer に設定し、「Counter」と名前を付けます。

    Step2_20.png

  7. Integer 変数の宣言と定義が完了したら、Counter をブループリント イベントグラフにドラッグして、ドロップダウン リストから [Get (ゲット)] を選択します。

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

  8. Counter ノードを引き出して IncrementInt ノードを検索して追加します。

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

  9. 次に IncrementInt ノードを Get ノードに接続します。

    Step2_23.png

    このチュートリアルの目的上、時間関数を使用して Counter 変数をインクリメントします。

  10. Event Tick ノードを引き出して、Delay ノードを検索して追加します。

    Step2_24.png

  11. 遅延時間を 2 秒に設定し、Delay ノードを IncrementInt ノードに接続します。

    Step2_25.png

  12. Event BeginPlay ノードを To Array ノードに追加します。

    Step2_26.png

  13. この時点で To Array ノードを引き出して Set Text ノードを検索してこのノードに接続し、コンテナのコンテンツをインゲームで表示します。

    Step2_27.png

  14. Get ノードを [Value (値)] ピン (Set Text ノードにある) に接続します。

    Step2_28.png

  15. IncrementInt ノードを Set Text ノードに接続します。

    Step2_29.png

  16. 完成したスクリプトを確認したら、エディタの Viewport インターフェースに戻る前に [Compile (コンパイル)] ボタンをクリックします。

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

  17. エディタの Viewport インターフェースで、[Play (プレイ)] ボタンをクリックして新しく実装したスクリプトの動きを確認します。

このセクションの結果

このガイドのこのステップでは、新しい Blueprint Set を定義し、コンテナに複数のアイテムを設定し、TextRender アクタのブループリント イベント グラフで作成した基本ロジックのいくつかを使用してそれらのアイテムを表示しました。もう少し高度な操作を学習したい場合は次のステップへ進んでください。2 つの Blueprint Set の Intersection (交差) の実行方法を学習します。

3.Intersection (交差) を実行する

TextRender アクタが前のステップで定義した Blueprint Map のコンテンツを表示するようになっています。このステップでは、2 つの Blueprint Set の Intersection (交差) を実行し、最終的にゲームの ビューポート にその Intersection (交差) の結果を出力します。

  1. プロジェクトの コンテンツ ブラウザ から Display Set TextRender アクタをダブルクリックして、ブループリント イベントグラフ を開きます。

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

  2. Display Set TextRender アクタのブループリント イベントグラフ が表示されていることを確認します。このイベント グラフで既存の Instruction Set を使用して新規の Blueprint Set を Intersect に追加して、最後に Resultant Set を ビューポート に表示します。

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

  3. この時点では、これから行う Intersection (交差) 用に複数の Blueprint Set コンテナを作成する必要があります。Instruction Set 変数を右クリックして、ドロップダウン リストから Duplicate を選択して新規 Blueprint Set を 2 つ作成して、それぞれに「Shorter Instruction Set」と「Resultant Instruction Set」と名前を付けます。

    Step3_3.png

    2 つの Set (通常) で Intersection (交差) を実行すると、2 つの Set に共通するアイテムのみが含まれる Resultant Set が発生します。

  4. この時点で、既存の Instruction Set 変数から複製した、新しい Blueprint Set 変数が 2 つあることを確認します。その新しい Blueprint Set のいずれか (Resultant Instruction Set) を選択すると、「Please compile the blueprint(ブループリントをコンパイルしてください)」という [Default Value] メッセージが表示されます。

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

  5. [Compile] ボタンをクリックします。

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

  6. ブループリントのコンパイルを完了すると [Default Value (デフォルト値)] メッセージが表示されなくなり、複数の既存要素が使用されるようになります。お分かりのように、この 2 つの新しい変数は、既存の Instruction Set 変数を複製して作成されたため、複製元の Blueprint Set に入っていたエレメントが新規に作成されたコンテナに複製されています。

    Step3_6.png

    なお、新規の変数は、既存変数を複製する必要なく作成できます。

  7. Resultant Instruction Set を消去するには、[Default Value] メニューにある Removes all items ボタンをクリックします。

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

  8. Shorter Instruction Set からアイテム (または要素) を消去します。

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

  9. 新規ロジックを既存のブループリント イベントグラフに追加する前に、Shorter Instruction Set 変数と Instruction Set 変数をブループリントにドラッグします。

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

ロジックのスクリプトを作成する

  1. 新規ロジックをビルドするには、Shorter Instruction Set ノードを引き出して Set Utilities インターフェースから Intersection ノードを追加します。

    Step3_10.png

  2. 次に、Instruction Set ノードを Intersection ノードに接続します。

    Step3_11.png

  3. ブループリント グラフ内を右クリックして コンテキスト メニュー を開き、Event ActorBeginOverlap を検索して追加します。

    Step3_12.png

  4. Event ActorBeginOverlap ノードから Other Actor ピンを引き出して、Cast To FirstPersonProjectile ノードを検索して追加します。

    Step3_13.png

  5. Cast To FirstPersonProjectile ノードを Intersection ノードに接続します。

    Step3_14.png

    基本的に、First Person Projectile はアクタのコリジョン ボックスと正常に衝突すると、Intersection ノードを呼び出します。

  6. Intersection ノードが Shorter Instruction SetInstruction Set 上で演算を実行した後、その結果を Resultant Instruction Set コンテナに格納します。そのためには、Intersection ノードを引き出して Set Resultant Instruction Set ノードを追加します。

    Step3_15.png

  7. Set Resultant Instruction Set ノードを引き出して Set Utilities インターフェースから To Array ノードを追加します。

    Step3_16.png

  8. Array の要素を繰り返し処理するには、To Array ノードを引き出して ForEachLoop ノードを追加します。

    Step3_17.png

  9. To Array ノードForEachLoop ノードを接続します。

    Step3_18.png

  10. Intersection の結果を Viewport に出力することができます。そのためには、ForEachLoop ノードの Array Element ピンを引き出して Print String ノードを検索して追加します。

    Step3_19.png

  11. ForEachLoop ノードを Print String ノードに接続します。

    Step3_20.png

  12. この段階で Resultant Instruction Set に何を含むかを決めることができます。例えば、Resultant Instruction Set 変数に ClickLeftMouseButton のみが含まれるようにしましょう。まず最初に、紙ベースで Intersection (交差) を実行します。

    命令セット

    短縮命令セット

    結果として得られる命令セット (A ∩ B)

    Click

    Click

    Click

    the

    Left

    Left

    Left

    Mouse

    Mouse

    Mouse

    Button

    Button

    Button

    and

    Fire

    今実行した紙ベースでの実行で分かるように、Instruction SetShorter Instruction Set の両方に共通したアイテムは Resultant Set コンテナに格納されます。Set で論理演算を実行する場合は、まず演算を紙 (またはホワイトボード) に書き出してから、ブループリント グラフでロジックのスクリプトを作成することをお勧めします。

  13. これで、Shorter Instruction Set コンテナに格納するアイテムがわかったので、Shorter Instruction Set を選択してコンテナのコンテンツを調べます。

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

    画像の黄色の枠の部分からわかるように、Shorter Instruction Set は現在空です。この時点で Instruction Set を使って Shorter Instruction Set を実行すると Resultant Instruction Set コンテナは空になります。

  14. Shorter Instruction Set コンテナに次の要素を設定します。

    Step3_22.png

  15. 完成したスクリプトを確認したら、[Compile] ボタンをクリックします。

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

  16. 最後に、完成したスクリプト全体を確認したら、エディタの Viewport インターフェースに戻る前に [Save] ボタンをクリックします。

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

  17. エディタの Viewport インターフェースで、[Play] ボタンをクリックして更新されたスクリプトの動きを確認します。

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

このセクションの結果

動画を見ると分かりますが、First Person Projectile が Display Set コリジョン ボックスと衝突すると、Resultant Instruction Set のコンテンツが Viewport に出力されます。出力されたアイテムを見ると Resultant Instruction Set の中にあるアイテムの順序は予測できません。これは Blueprint Set の属性です。次のステップでは、2 つの Blueprint Set で Union (結合) を実行する方法を説明します。

4.Union (結合) を実行する

チュートリアルの最後のステップです。2 つの Blueprint Set の Union を実行し、最終的にゲームの ビューポート に出力します。

  1. プロジェクトの コンテンツ ブラウザ から Display Set TextRender アクタをダブルクリックして、ブループリント イベントグラフ を開きます。

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

  2. この時点では、これから行う Union (結合) 用に新しい Blueprint Set コンテナを作成する必要があります。Shorter Instruction Set 変数を右クリックしてドロップダウン リストから [Duplicate] を選択し、新規の Blueprint Set 変数を作成し、「Longer Instruction Set」と名前を付けます。

    Step4_2.png

  3. 次に、[Compile (コンパイル)] ボタンをクリックします。

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

  4. [Removes all items (すべてのアイテムを除去する)] ボタンをクリックして Longer Instruction Set からすべてのアイテムを消去します。

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

  5. 以下のアイテムを新しい Longer Instruction Set コンテナに追加します。

    Step4_5.png

  6. Longer Instruction Set 変数と Instruction Set 変数をブループリント グラフにドラッグします。

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

ロジックのスクリプトを作成する

  1. 新規ロジックをビルドするには、Longer Instruction Set ノードを引き出して Set Utilities インターフェースから Union ノードを追加します。

    Step4_7.png

  2. Instruction Set ノードを Union ノードに接続します。

    Step4_8.png

  3. Cast To FirstPersonProjectile ノードの Cast FailedUnion ノードに接続します。

    Step4_9.png

  4. Union ノードを引き出して To Array ノードを検索して追加します。

    Step4_10.png

  5. To Array ノードを引き出して ForEachLoop ノードを検索して追加します。

    Step4_11.png

  6. To Array ノード と ForEachLoop ノードを接続します。

    Step4_12.png

  7. これで、Union の結果を Viewport に出力することができます。そのためには、ForEachLoop ノードの Array Element ピンを引き出して Print String ノードを検索して追加します。

    Step4_13.png

  8. ForEachLoop ノードを Print String ノードに接続します。

    Step4_14.png

  9. デバッグ メッセージが出力されているので、ビューポート に出力されるテキストの色を変更する必要があります。Print String ノードの下にあるメニュー展開矢印をクリックします。

    Step4_15.png

  10. [Text Color (テキスト カラー)] ボックスをクリックして [Color Picker (カラー ピッカー)] メニューを開きます。

    Step4_16.png

  11. 色を以下の値に設定します。

    Step4_17.png

  12. 次に、[Compile (コンパイル)] ボタンをクリックします。

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

  13. 完成したスクリプトを確認したら、エディタの Viewport インターフェースに戻る前に [Save] ボタンをクリックします。

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

  14. エディタの Viewport インターフェースで、[Play] ボタンをクリックして更新されたスクリプトの動きを確認します。

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

最終結果

動画を見ると分かりますが、First Person Character が Display Set コリジョン ボックスと衝突すると、Union のコンテンツが Viewport に出力されます。出力されたアイテムを見ると、ここでもまたアイテムの順序は予測できないことが分かります。これは Blueprint Set の属性です。。なお、2 つの Blueprint Set の Union (結合) 演算を紙ベースで実行すると、以下のような結果が得られます。

命令セット

完全な命令セット

結果出力 (A ∪ B)

Click

your

Click

the

Gun

the

Left

Left

Mouse

Mouse

Button

Button

and

and

Fire

Fire

your

Gun

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback