構造体

ゲームプレイ クラスの構造体の作成と実装に関する参照。

構造体 は、メンバーのプロパティを整理および操作する際に便利なデータ構造です。Unreal Engine のリフレクション システムは、構造体を UStruct として認識しますが、構造体は UObject エコシステムの一部ではないため、UClasses 内で使用することはできません。

  • UStruct は、同じデータ レイアウトを使用する UObject よりも高速に作成できます。

  • UStruct は UProperty をサポートしますが、ガベージ コレクション システムによって管理されておらず、UFunction の機能も使用できません。

UStruct を実装する

構造体を UStruct にするには、次の手順に従います。

  1. 構造体を定義する ヘッダ (.h) ファイルを開きます。

  2. C++ 構造体を定義するには、構造体の定義の上に USTRUCT マクロを置きます。

  3. GENERATED_BODY() マクロを定義の最初の行として含めます。

結果は次の例のようになります。

    USTRUCT([Specifier, Specifier, ...])
    struct FStructName
    {
        GENERATED_BODY()
    };

構造体のメンバー変数に UPROPERTY のタグを付けると、Unreal のリフレクション システムおよびブループリント スクリプトで認識されるようになります。エンジンおよびエディタのさまざまなモジュールでプロパティがどのように動作するかを確認するには、UProperty 指定子のリストを参照してください。

構造体指定子

構造体指定子 は、エンジンとエディタのさまざまな側面で構造体がどのように動作するかを制御するメタデータを提供します。

|構造体指定子| エフェクトの内容| |Atomic|この構造体を常に 1 つの単位としてシリアル化する必要があることを示します。このクラスに対して自動生成コードは作成されません。ヘッダはメタデータをパースするためにのみ提供されます。 | |BlueprintType|この構造体を、ブループリントの変数に使用できる型として公開します。 | |NoExport|このクラスに対して自動生成コードは作成されません。ヘッダはメタデータを解析するためにのみ提供されます。 |

ベスト プラクティスとヒント

以下は、UStruct を使用するときに覚えておくと役立つヒントです。

  1. UStruct は、Unreal Engine のスマート ポインタとガベージ コレクション システムを使用して、ガベージ コレクションによる UObjects の削除を防ぐことができます。

  2. 構造体の使用は、単純なデータ型に対して最適です。プロジェクト内でより複雑なインタラクションを行う場合は、代わりに UObject または AActor サブクラスを作成することをお勧めします。

  3. UStructs は レプリケーションの対象として 考慮されません。ただし、UProperty 変数はレプリケーションの 対象となります

  4. Unreal Engine では、構造体の Make 関数と Break 関数を自動的に作成できます。

    1. Make は BlueprintType タグ付きの UStruct に表示されます。

    2. UStruct に少なくとも 1 つの BlueprintReadOnly または BlueprintReadWrite プロパティがある場合、Break が表示されます。 1.Break が作成する純粋なノードは、BlueprintReadOnly または BlueprintReadWrite のタグが付いたプロパティごとに 1 つの出力ピンを提供します。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル