Structs (または UStructs) は、関連するプロパティを整理および操作するのに役立つデータ構造です。構造体を使用して、プロジェクトの整理に役立つカスタム変数型を作成することができます。このガイドは、構造体をセットアップし、それらのカスタマイズ方法を見抜く上で役立ちます。
構造体を実装する
- 構造体を定義する ヘッダ (.h) ファイルを開きます。
- C++ 構造体 を定義し、構造体が必要とするすべての Ustruct 指定子 などの
USTRUCTマクロをその前に追加します。 - 構造体の一番上に
GENERATED_BODYマクロを追加します。 - 構造体のメンバ変数を
UPROPERTYを使ってタグづけして、UE のリフレクション システムとブループリント スクリプトでそれらが見えるようにすることができます。- エンジンおよびエディタのさまざまな側面におけるプロパティの動作を確認するには、「Uproperty 指定子」のリストを参照してください。
例
USTRUCT(BlueprintType)
struct FMyStruct
{
GENERATED_BODY()
//~ The following member variable will be accessible by Blueprint Graphs:
// This is the tooltip for our test variable.
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Test Variables")
int32 MyIntegerMemberVariable;
//~ The following member variable will be not accessible by Blueprint Graphs:
int32 NativeOnlyMemberVariable;
/**~
* This UObject pointer is not accessible to Blueprint Graphs, but
* is visible to UE4’s reflection, smart pointer, and garbage collection
* systems.
*/
UPROPERTY()
UObject* SafeObjectPointer;
};
追加情報
役立つヒント、および構造体を使用する際に覚えておく事を説明します。
UStructsは UE のスマート ポインタとガーベジ コレクション システムを使って、UObjectsがガーベジ コレクションによって削除されることを防ぐことができます。- 構造体は
UObjectsとは異なります。そのため、構造体はシンプルなデータ型に対する使用が最善です。- プロジェクト内でより複雑なインタラクションを行う場合は、代わりに UObject や AActor のサブクラスを作成すると良いでしょう。
UStructsはレプリケーションを考慮 していません。UProperty変数はレプリケーションを考慮 しています。
- UE は構造体に対して Make 関数と Break 関数を自動作成することができます。
- Make は
UStructにBlueprintTypeタグがあると作成されます。 - Break は Ustruct に
BlueprintReadOnlyまたはBlueprintReadWriteプロパティが最低 1 つある場合に作成されます。 - Break が作成する純粋なノードには、1 つのプロパティに対して
BlueprintReadOnlyまたはBlueprintReadWriteとしてタグづけされた出力ピンが 1 つ付いています。
- Make は