持ち物の「名前」「攻撃力」「耐久値」を別々の変数で管理していると、アイテムを渡すたびに3つの値を揃える必要があります。持ち物が増えると、「この名前と、この耐久値は同じ剣のものだろうか」と、対応を確かめる手間も増えてきます。
構造体(Struct) は、こうした情報をひとまとめにするための型です。「アイテム1個分の情報」を1本のワイヤーで渡せるようになります。
この記事では、鉄の剣のデータを作り、耐久値を100から90へ変えます。その途中で、手元のコピーは90なのに、持ち物の中身は100のまま になる場面も確かめます。どちらの値を変えたのかが分かれば、配列の更新で迷いにくくなります。
この記事でわかること
- 構造体に名前・攻撃力・耐久値をまとめる
- Makeで組み立て、Breakで必要な値を取り出す
- コピーと元の配列を読み比べ、書き戻した結果を確認する
Blueprintで変数を作り、ノードをつないだことがある人向けです。持ち物の画面は作らず、まずPrint Stringでデータの動きを確かめます。
構造体は1個分、配列は複数個分
構造体に入れる各項目を メンバー と呼びます。今回は「名前」「攻撃力」「耐久値」の3つです。まとめるかどうかは、項目数よりも、同じものの情報として一緒に扱いたいか を目安に考えます。
一方、配列(Array) は、同じ型の値を順番に並べて持つものです。構造体が「剣1本分の情報」なら、構造体の配列は「何本かの剣を並べた持ち物リスト」に当たります。

配列内の位置を表す番号が インデックス(Index) です。最初が0、次が1と、0から数えます。名前と耐久値を別々の配列に分ける方法もありますが、アイテム1個を構造体にすると、その情報を同じ位置にまとめておけます。
構造体は、ゲーム内に剣を置く機能ではありません。まずは剣についての「情報」を扱います。見た目のActorを出す処理や、持ち物UIへ表示する処理は、その情報を受け取る側の仕事です。
構造体を作り、MakeとBreakを知る
練習用のフォルダで、コンテンツブラウザを右クリックし、「Blueprints」→「Structure」から S_DemoItem を作ります。S_ は構造体を見分けるための名前の付け方で、UEの必須ルールではありません。
開いたら「Add Variable」で項目を追加し、次の名前と型にします。型 は、その項目へ入れられる値の種類です。
| メンバー名 | 型 | 今回の意味 |
|---|---|---|
DisplayName | Text | 画面に表示するアイテム名 |
Attack | Integer | 攻撃力。整数で扱う |
Durability | Integer | 今の耐久値。整数で扱う |
「Default Values」で DisplayName を空、Attack を0、Durability を100にして保存します。デフォルト値 は、値を指定しなかったときの出発点です。すでに作った剣を、一斉に回復させる設定ではありません。
この型をBlueprintで使うと、次の2つのノードを作れます。
| ノード | すること | 鉄の剣の例 |
|---|---|---|
Make S_DemoItem | 各項目から構造体の値を組み立てる | 鉄の剣・10・100 → 1個分の情報 |
Break S_DemoItem | 構造体から各項目を取り出す | 1個分の情報 → 名前、攻撃力、耐久値 |

Breakは「項目ごとに分けて読む」という意味です。アイテムを壊したり、配列から削除したりはしません。
MakeとBreakには白い実行ピンがありません。こうした 純粋ノード は、値を使う処理に必要になったときに評価されます。白い線で実行順をつなぐSetやPrint Stringと、役割が違います。
コピーを変えても、元の値は変わらない
構造体は、代入すると中の値がコピーされる 値型 です。今回の配列から取り出す Get (a copy) も、その位置にあるアイテムの情報をコピーして返します。
たとえば、持ち物にある鉄の剣の耐久値が100だとします。その情報を取り出して90へ変えても、変わったのは取り出した側です。元の配列を90にするには、変更後の情報を同じ位置へ入れ直します。

この「取り出す→変える→元の場所へ入れる」という最後の操作を、ここでは