Set を使用して作業する

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

Windows
MacOS
Linux

workingWithSets_topicBanner.png

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

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

1. 必要な設定を行う

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

  1. Unreal Project Browser[New Project (新規プロジェクト)] タブから First Person ブループリント プロジェクトを選択し、プロジェクトに「ExampleSetProject」と名前を付けます。

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

  2. 新規プロジェクトを作成する前に、プロジェクトが以下の設定になっているかを確認します。

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

  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」と名前を付けます。

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

  8. DisplaySet TextRender アクタをアンリアル エディタの Perspective (3D) Viewport にドラッグします。

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

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

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

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

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

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

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

  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 アクタも設定しました。これにより、次のステップで作成、編集、表示する 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」と名前を付けます

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

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

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

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

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

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

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

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

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

  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 ノードを追加します。

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

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

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

    Set からアイテムを取得する方法はいくつかあります。特定のキーを使って Set をクエリする方法、そしてセット内のアイテムによってイタレートする方法です。今は、カウンタ変数を使って、Instruction Set のイタレートを行います。

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

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

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

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

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

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

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

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

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

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

    このチュートリアルの目的に合わせて、タイマー関数を使用して Counter 変数をインクリメントします。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

このセクションの結果

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

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

前のステップでは TextRender アクタが Blueprint Set のコンテンツを表示するように定義をしました。このステップでは、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 つあることを確認します。新しい Blueprints 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 ノードを追加します。

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

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

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

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

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

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

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

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

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

    基本的に、First Person Projectile がこのアクタのコリジョン ボックスと問題なく衝突すれば Intersection ノードを呼び出すことになります。

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

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

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

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

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

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

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

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

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

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

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

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

  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 ノードを追加します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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