Language:
Page Info
Skill Level:
Engine Version:

プロパティ

プロパティの宣言

プロパティは標準の C++ 変数記法を使って宣言され、プロパティ メタデータと変数指定子を定義する UPROPERTY マクロが先にきます。

UPROPERTY([specifier, specifier, ...], [meta(key=value, key=value, ...)])
Type VariableName;

主要なデータ型

整数

整数データ型の規則では、ビット サイズの前に「int」あるいは「uint」をつけます。

変数の型

説明

uint8

8-bit 符号なし

uint16

16-bit 符号なし

uint32

32-bit 符号なし

uint64**

64-bit 符号なし

int8**

8-bit 符号付き

int16**

16-bit 符号付き

int32**

32-bit 符号付き

int64

64-bit 符号付き

As Bitmasks

Integer プロパティが bitmask としてエディタに公開できるようになりました。Integer プロパティを bitmask としてマークするには、以下のようにメタ セクションに "bitmask" を追加します。

UPROPERTY(EditAnywhere, Meta = (Bitmask))
int32 BasicBits;

このメタ タグを追加すると、個々にオンオフの切り替えが可能な一般名の付いたフラグ ("Flag 1"、"Flag 2"、"Flag 3" など) のドロップダウン リストとして integer が編集可能になります。

GenericBitmask.png

Bitflag 名をカスタマイズするには、まず "bitflags" メタ タグで UENUM を作成する必要があります。

UENUM(Meta = (Bitflags))
enum class EColorBits
{
    ECB_Red,
    ECB_Green,
    ECB_Blue
};

UENUM が作成されたら、"BitmaskEnum" メタ タグで参照することができます。このようになります。

UPROPERTY(EditAnywhere, Meta = (Bitmask, BitmaskEnum = "EColorBits"))
int32 ColorFlags;

この変更に伴い、ドロップダウン ボックスにリストされた bitflag は列挙されたクラス エントリの名前と値を受け取ります。この例では、ECB_Red が値 0 です。 つまり、チェックされていると、bit 0 (ColorFlags に 1 を追加) がアクティベートされます。ECB_Green は bit 1 (ColorFlags に 2 を追加) に相当し、 ECB_Blue は bit 2 (ColorFlags に 4 を追加) に相当します。

CustomBitmask.png

列挙型には 32 を超えるエントリを含むことができますが、最初の 32 値のみがプロパティ エディタ UI の bitmask association で 表示されます。同様に、明示的な値エントリが受け取られたら、0 から 31 の明示的な値をもつエントリはドロップダウンには含まれません。

浮動小数点型

アンリアルでは、標準の C++ 浮動小数点型である float 型と double 型が使用されています。

Boolean 型

Boolean 型は、 C++ bool キーワードで、あるいはビットフィールドとして表現されます。

uint32 bIsHungry :1;
bool bIsThirsty;

文字列

アンリアル エンジン 4 は、主要な 3 種類の文字列をサポートしています。

  • FString は「動的文字型配列」の文字列型の典型といえます。

  • FName は、グローバル文字列表の変更不可能な大文字・小文字を区別しない文字列への参照です。FString より小さく、より効率よく受け渡しができますが、操作は難しくなります。

  • FText は、ローカリゼーションに対処するために作成された更に堅牢な文字列表現です。

使用する場合はたいてい、アンリアルは文字で TCHAR 型に依存します。TEXT() マクロは TCHAR リテラルを表すために利用できます。

MyDogPtr->DogName = FName(TEXT("Samson Aloysius"));

いつ使用するのか、どのように機能するのかなど、3 つの文字列型の詳細は 文字列の取り扱いのドキュメント を参照してください。

プロパティ指定子

プロパティを宣言する時、エンジンおよびエディタの各部で、プロパティがどのように動作するのかを制御する指定子を宣言に追加することができます。

プロパティ タグ

効果

AdvancedDisplay

プロパティは [Details (詳細)] パネルの拡張ドロップダウンリストに表示されます。

AssetRegistrySearchable

AssetRegistrySearchable キーワードは、これをメンバー変数として格納するアセットクラスインスタンスに対して、このプロパティとその値が自動的にアセットレジストリへ追加されることを示します。構造体プロパティもしくはパラメータへの使用は不正です。

BlueprintAssignable

マルチキャスト デリゲートとのみ使用できます。ブループリントで割り当てるためにプロパティを公開します。

BlueprintAuthorityOnly

このプロパティはマルチキャスト デリゲートでなければなりません。ブループリントでは BlueprintAuthorityOnly というタグがついたイベントのみ受け入れます。

BlueprintCallable

マルチキャスト デリゲートのみです。ブループリントのコードで呼び出すためにプロパティは公開されなければいけません。

BlueprintGetter = GetterFunctionName

このプロパティはカスタム アクセサ関数を指定します。このプロパティに BlueprintSetter または BlueprintReadWrite のタグがなければ、暗黙的に BlueprintReadOnly です。

BlueprintReadOnly

このプロパティはブループリントで読み取り可能ですが、修正はできません。この演算子は BlueprintReadWrite 指定子とは互換性がありません。

BlueprintReadWrite

このプロパティはブループリントでの読み取りと書き込みが可能です。この演算子は BlueprintReadOnly 指定子とは互換性がありません。

BlueprintSetter

このプロパティは、カスタム ミューテータ関数を持ち、暗黙的に BlueprintReadWrite にタグ付けされています。ミューテータ関数を指定しなければなりません。例、"BlueprintSetter=SetterFunctionName"

Category = TopCategory|SubCategory|...

ブループリントの編集ツールで表示される場合に、プロパティのカテゴリを指定します。 | 演算子を使ってネスティングするカテゴリを定義します。

Config

この変数は設定可能になります。現在の値をクラスに関連する ini ファイルに保存することができ、作成時にロードされます。デフォルトのプロパティでは、値を設定できません。ReadOnly を意味します。

DuplicateTransient

複製のタイプ (コピー/貼り付け、バイナリの複製など)を問わず複製中は、変数の値は常にデフォルト値にリセットされることを示します 。

EditAnywhere

このプロパティはエディタのプロパティ ウィンドウでアーキタイプ上とインスタンス上での編集が可能なことを示します。

EditDefaultsOnly

このプロパティはプロパティ ウィンドウで編集が可能なことを示しますが、アーキタイプ上のみの編集が可能です。この演算子は "Visible" タグとは互換性がありません。

EditFixedSize

動的配列に対してのみ有効です。ユーザーが、アンリアル エディタ プロパティ ウィンドウで配列の長さを変更してしまうことを防ぎます。

EditInline

ユーザーはこの変数に参照されたオブジェクトのプロパティを、アンリアル エディタのプロパティ インスペクタ内で編集できます (オブジェクト参照の配列を含むオブジェクト参照でのみ有用です)。

EditInstanceOnly

このプロパティはプロパティ ウィンドウで編集が可能なことを示しますが、インスタンス上のみでアーキタイプ上ではありません。この演算子は "Visible" タグとは互換性がありません。

Export

オブジェクト プロパティ (またはオブジェクトの配列) にのみ有用です。このプロパティに割り当てられたオブジェクトは、T3D へコピー (コピー / ペースト) あるいはエクスポートされる時、オブジェクト参照そのものを単に出力するのではなく、サブオブジェクト ブロックとしてそのままエクスポートされることを表します。

GlobalConfig

サブクラスではオーバーライドできない以外は、Config と機能は同じです。デフォルトのプロパティでは、値を設定できません。ReadOnly を意味します。

Instanced

オブジェクトの (UCLASS) プロパティのみです。このクラスのインスタンスが作成される場合、デフォルトでこの変数に割り当てられたオブジェクトのユニークなコピーが作成されます。クラスのデフォルト プロパティで定義されたサブオブジェクトのインスタンス化に使用されます。EditInlineExport を意味します。

Interp

マチネのトラックによって、経時的に値を操作できることを表します。

Localized

この変数の値は、ローカライズされた値を定義します。文字列に使用する場合が多いです。ReadOnly を意味します。

Native

プロパティはネイティブになります。C++ コードを使ってプロパティのシリアライズとガーベジ コレクションの対象にします。

NoClear

このオブジェクト参照がエディタから None に設定されないようにします。エディタの [Clear (および Browse)] ボタンを非表示にします。

NoExport

ネイティブ クラスに対してのみ有用です。この変数は自動生成クラス宣言に含まれてはいけません。

NonPIEDuplicateTransient

このプロパティは、PIE セッションのために複製中の場合を除いて、複製中にデフォルト値にリセットされます。

NonTransactional

この変数値に対する変更はエディタの元に戻す / やり直す操作の履歴に含まれないことを表します。

NotReplicated

複製をスキップします。サービス要求関数の構造体メンバーとパラメータにのみ適用されます。

Replicated

変数はネットワーク上でレプリケートされます。

ReplicatedUsing = FunctionName

ReplicatedUsing タグは、コールバック関数を指定します。これは、ネットワーク上で変数が更新されたときに実行されます。

RepRetry

構造体のプロパティでのみ有用です。完全に送信されなかった場合 (例、ネットワーク上でのシリアライズにオブジェクト参照がまだ利用できない)、このプロパティのレプリケーションを再試行します。単純な参照では、このプロパティはデフォルトですが、構造体の場合は帯域幅の負荷を考えると好ましくありません。フラグが指定されていない限りは、使用しない方がいいでしょう。

SaveGame

SaveGame 指定子は、プロパティ レベルでチェックポイント / 保存システムにフィールドを明示的にインクルードする単純な方法です。保存したゲームの一部にするつもりの全フィールドにこのフラグを設定し、プロキシ アーカイバーを使って読み出し / 書き込むことができます。

SerializeText

ネイティブ プロパティはテキストとしてシリアライズしなくてはいけません (ImportTextExportText)。

SkipSerialization

このプロパティはシリアライズされませんが、テキスト形式でエクスポート可能です (例、コピー / 貼付け)。

SimpleDisplay

[Details] パネルに表示され、編集可能なプロパティが表示されます。[Advanced] セクションを開かなくても表示されます。

TextExportTransient

このプロパティはテキスト形式ではエクスポートされません (例、コピー / 貼付け)。

Transient

プロパティは一時的なものです。つまり、保存やロードはされません。このようにタグ付けされたプロパティは、ロード時にゼロで埋められます。

VisibleAnywhere

このプロパティはすべてのプロパティウィンドウで可視化できることを示しますが、編集は一切できません。このタグは Edit タグとは互換性がありません。

VisibleDefaultsOnly

このプロパティはアーキタイプからプロパティウィンドウのみで可視化できることを示しますが、編集は一切できません。このタグは Edit タグとは互換性がありません。

VisibleInstanceOnly

このプロパティはアーキタイプからではなく、インスタンスからプロパティウィンドウのみで可視化できることを示しますが、編集は一切できません。このタグは Edit タグとは互換性がありません。