プロパティの宣言
プロパティは標準の 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" を追加します。
/*~ BasicBits appears as a list of generic flags in the editor, instead of an integer field. */
UPROPERTY(EditAnywhere, Meta = (Bitmask))
int32 BasicBits;
このメタ タグを追加すると、個々にオンオフの切り替えが可能な一般名の付いたフラグ ("Flag 1"、"Flag 2"、"Flag 3" など) のドロップダウン リストとして integer が編集可能になります。

パラメータの UPARAM
指定子に ` Bitmask` メタタグ (値は不要) を追加することにより、Blueprint 呼び出し可能関数の整数パラメータをビットマスクとして動作させることもできます。
/*~ You can set MyFunction using a generic list of flags instead of typing in an integer value. */
UFUNCTION(BlueprintCallable)
void MyFunction(UPARAM(meta=(Bitmask)) int32 BasicBitsParam)
Bitflag 名をカスタマイズするには、まず "bitflags" メタ タグで UENUM を作成する必要があります。
UENUM(Meta = (Bitflags))
enum class EColorBits
{
ECB_Red,
ECB_Green,
ECB_Blue
};
ビットマスク列挙型でサポートされる値の範囲は、0〜31 です。これは、32 ビット整数変数のビット (ビット 0 から開始) に対応します。上記の例では、ビット 0 は ECB_Red
、ビット 1 は ECB_Green
、ビット 2 は ECB_Blue
です。
別の宣言スタイルでは、ENUM_CLASS_FLAGS
を使用して、列挙型を定義した後にビットマスクに変換できます。エディタ でフラグ セレクタを使用するには、メタフィールド UseEnumValuesAsMaskValuesInEditor
を追加し、それを true
に設定する必要があります。この方法ではビット番号ではなくマスク値を直接使用する点が主な違いです。この方法を使用して作成された同等の列挙型は、次のようになります。
UENUM(Meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true"))
enum class EColorBits
{
ECB_Red = 0x01,
ECB_Green = 0x02,
ECB_Blue = 0x04
};
ENUM_CLASS_FLAGS(EColorBits);
この UENUM を作成すると、次のように "BitmaskEnum" タグで参照することができるようになります。
/*~ This property lists flags matching the names of values from EColorBits. */
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 を追加) に相当します。

同様に BitmaskEnum
と適切な列挙型名を UPARAM
タグのメタ セクションに追加してカスタマイズすることができます。
/*~ MyOtherFunction shows flags named after the values from EColorBits. */
UFUNCTION(BlueprintCallable)
void MyOtherFunction(UPARAM(meta=(Bitmask, BitmaskEnum = "EColorBits")) int32 ColorFlagsParam)
列挙型には 32 を超えるエントリを含むことができますが、最初の 32 値のみがプロパティ エディタ UI の bitmask association で 表示されます。同様に、明示的な値エントリが受け取られたら、0 から 31 の明示的な値をもつエントリはドロップダウンには含まれません。
浮動小数点型
アンリアルでは、標準の C++ 浮動小数点型である float 型と double 型が使用されています。
Boolean 型
Boolean 型は、 C++ bool キーワードで、あるいはビットフィールドとして表現されます。
uint32 bIsHungry :1;
bool bIsThirsty;
文字列
Unreal Engine 4 は、主要な 3 種類の文字列をサポートしています。
- FString は「動的文字型配列」の文字列型の典型といえます。
- FName は、グローバル文字列表の変更不可能な大文字・小文字を区別しない文字列への参照です。FString より小さく、より効率よく受け渡しができますが、操作は難しくなります。
- FText は、ローカリゼーションに対処するために作成された更に堅牢な文字列表現です。
使用する場合はたいてい、アンリアルは文字で TCHAR 型に依存します。TEXT() マクロは TCHAR リテラルを表すために利用できます。
MyDogPtr->DogName = FName(TEXT("Samson Aloysius"));
いつ使用するのか、どのように機能するのかなど、3 つの文字列型の詳細は「文字列の取り扱いのドキュメント」を参照してください。
プロパティ指定子
プロパティを宣言する時、Property Specifiers を宣言に追加して、Unreal Engine および Unreal Editor の各部で、プロパティがどのように動作するのかを制御することができます。
プロパティ タグ | 効果 |
---|---|
AdvancedDisplay |
このプロパティは任意のパネルの [Advanced (ドロップダウン)] セクションに表示されます。 |
AssetRegistrySearchable |
この指定子は、これをメンバー変数として格納するアセットクラスインスタンスに対して、このプロパティとその値が自動的にアセットレジストリへ追加されることを示します。構造体プロパティもしくはパラメータへの使用は不正です。 |
BlueprintAssignable |
マルチキャスト デリゲートとのみ使用できます。ブループリントで割り当てるためにプロパティを公開します。 |
BlueprintAuthorityOnly |
このプロパティはマルチキャスト デリゲートでなければなりません。ブループリントでは BlueprintAuthorityOnly というタグがついたイベントのみ受け入れます。 |
BlueprintCallable |
マルチキャスト デリゲートのみです。ブループリントのコードで呼び出すためにプロパティは公開されなければいけません。 |
BlueprintGetter=GetterFunctionName |
このプロパティはカスタム アクセサ関数を指定します。このプロパティに BlueprintSetter または BlueprintReadWrite のタグがなければ、暗黙的に BlueprintReadOnly です。 |
BlueprintReadOnly |
このプロパティはブループリントで読み取り可能ですが、修正はできません。この指定子は BlueprintReadWrite 指定子とは互換性がありません。 |
BlueprintReadWrite |
このプロパティはブループリントでの読み取りと書き込みが可能です。この指定子は BlueprintReadOnly 指定子とは互換性がありません。 |
BlueprintSetter=SetterFunctionName |
このプロパティは、カスタム ミューテータ関数を持ち、暗黙的に BlueprintReadWrite にタグ付けされています。ミューテータ関数は、同じクラスで名前付けしてその一部でなければなりません。 |
Category="TopCategory\|SubCategory\|..." |
ブループリントの編集ツールで表示される場合に、プロパティのカテゴリを指定します。| 演算子を使ってネスティングするカテゴリを定義します。 |
Config |
このプロパティは設定可能になります。現在の値をクラスに関連する.ini ファイルに保存することができ、作成時にロードされます。デフォルトのプロパティでは、値を設定できません。BlueprintReadOnly を意味します。 |
DuplicateTransient |
複製のタイプ (コピー/貼り付け、バイナリの複製など)を問わず複製中は、プロパティの値は常にデフォルト値にリセットされることを示します 。 |
EditAnywhere |
このプロパティはエディタのプロパティ ウィンドウでアーキタイプ上とインスタンス上での編集が可能なことを示します。この指定子は "Visible" 指定子とは互換性がありません。 |
EditDefaultsOnly |
このプロパティはプロパティ ウィンドウで編集が可能なことを示しますが、アーキタイプ上のみの編集が可能です。この指定子は "Visible" 指定子とは互換性がありません。 |
EditFixedSize |
動的配列に対してのみ有効です。ユーザーが、アンリアル エディタ プロパティ ウィンドウで配列の長さを変更してしまうことを防ぎます。 |
EditInline |
ユーザーはこのプロパティに参照されたオブジェクトのプロパティを、アンリアル エディタのプロパティ インスペクタ内で編集できます (オブジェクト参照の配列を含むオブジェクト参照でのみ有用です)。 |
EditInstanceOnly |
このプロパティはプロパティ ウィンドウで編集が可能なことを示しますが、インスタンス上のみでアーキタイプ上ではありません。この指定子は "Visible" 指定子とは互換性がありません。 |
Export |
オブジェクト プロパティ (またはオブジェクトの配列) にのみ有用です。このプロパティに割り当てられたオブジェクトは、コピー (コピー / ペースト操作など) される時、オブジェクト参照そのものを単に出力するのではなく、サブオブジェクト ブロックとしてそのまま全体がエクスポートされることを表します。 |
GlobalConfig |
サブクラスではオーバーライドできない以外は、Config と機能は同じです。デフォルトのプロパティでは、値を設定できません。BlueprintReadOnly を意味します。 |
Instanced |
オブジェクトの (UCLASS ) プロパティのみです。このクラスのインスタンスが作成される場合、デフォルトでこのプロパティに割り当てられたオブジェクトのユニークなコピーが作成されます。クラスのデフォルト プロパティで定義されたサブオブジェクトのインスタンス化に使用されます。EditInline と Export を意味します。 |
Interp |
シーケンサーのトラックによって、経時的に値を操作できることを表します。 |
Localized |
このプロパティの値は、ローカライズされた値を定義します。文字列に使用する場合が多いです。ReadOnly を意味します。 |
Native |
プロパティはネイティブになります。C++ コードはプロパティのシリアル化と ガーベジ コレクションへの公開に関与します。 |
NoClear |
このオブジェクト参照がエディタから None に設定されないようにします。エディタの [Clear (および Browse)] ボタンを非表示にします。 |
NoExport |
ネイティブ クラスに対してのみ有用です。このプロパティは自動生成クラス宣言に含まれてはいけません。 |
NonPIEDuplicateTransient |
このプロパティは、Play In Editor (PIE) セッションのために複製中の場合を除いて、複製中にデフォルト値にリセットされます。 |
NonTransactional |
このプロパティ値に対する変更はエディタの元に戻す / やり直す操作の履歴に含まれないことを表します。 |
NotReplicated |
複製をスキップします。サービス要求関数の構造体メンバーとパラメータにのみ適用されます。 |
Replicated |
プロパティはネットワーク上でレプリケートされます。 |
ReplicatedUsing=FunctionName |
ReplicatedUsing 指定子は、コールバック関数を指定します。これは、ネットワーク上でプロパティが更新されたときに実行されます。 |
RepRetry |
構造体のプロパティでのみ有用です。完全に送信されなかった場合 (例、ネットワーク上でのシリアライズにオブジェクト参照がまだ利用できない)、このプロパティのレプリケーションを再試行します。単純な参照では、このプロパティはデフォルトですが、構造体の場合は帯域幅の負荷を考えると好ましくありません。フラグが指定されていない限りは、使用しない方がいいでしょう。 |
SaveGame |
この指定子は、プロパティ レベルでチェックポイント / 保存システムにフィールドを明示的にインクルードする単純な方法です。保存したゲームの一部にするつもりの全フィールドにこのフラグを設定し、プロキシ アーカイバーを使って読み出し / 書き込むことができます。 |
SerializeText |
ネイティブ プロパティはテキストとしてシリアライズしなくてはいけません (ImportText 、 ExportText )。 |
SkipSerialization |
このプロパティはシリアライズされませんが、テキスト形式でエクスポート可能です (例、コピー / 貼付け操作など)。 |
SimpleDisplay |
[Details] パネルに表示され、編集可能なプロパティが表示されます。[Advanced] セクションを開かなくても表示されます。 |
TextExportTransient |
このプロパティはテキスト形式ではエクスポートされません (そのため例えばコピー / 貼付け操作では使用できません)。 |
Transient |
プロパティは一時的なものです。つまり、保存やロードはされません。このようにタグ付けされたプロパティは、ロード時にゼロで埋められます。 |
VisibleAnywhere |
このプロパティはすべてのプロパティウィンドウで可視化できることを示しますが、編集は一切できません。この指定子は "Edit" 指定子とは互換性がありません。 |
VisibleDefaultsOnly |
このプロパティはアーキタイプからプロパティウィンドウのみで可視化できることを示しますが、編集は一切できません。この指定子は "Edit" 指定子とは互換性がありません。 |
VisibleInstanceOnly |
このプロパティはアーキタイプからではなく、インスタンスからプロパティウィンドウのみで可視化できることを示しますが、編集は一切できません。この指定子は "Edit" 指定子とは互換性がありません。 |
メタデータ指定子
クラス、インターフェース、構造体、列挙型変数、列挙型変数の値、関数、プロパティを宣言するときに、メタデータ指定子 を宣言に追加して、エンジンやエディタのさまざまな側面でどのようにインタラクタするかを制御することができます。データ構造またはメンバーのそれぞれの型には、固有のメタデータ指定子のリストがあります。
メタデータはエディタのみに存在しています。メタデータにアクセスするゲーム ロジックを書かないでください。
プロパティ メタタグ | 効果 |
---|---|
AllowAbstract="true/false" |
Subclass および SoftClass プロパティに使用されます。抽象クラス型をクラス ピッカーに表示するかどうかを示します。 |
AllowedClasses="Class1, Class2, .." |
FSoftObjectPath プロパティに使用されます。アセット ピッカーに表示されるアセットのクラス型を示す、カンマ区切りのリスト。 |
AllowPreserveRatio |
FVector プロパティに使用されます。[Details] パネルにこのプロパティを表示するときに、比率ロックが追加されます。 |
ArrayClamp="ArrayProperty" |
整数プロパティに使用されます。UI に入力できる有効な値を、「0」から指定された配列プロパティの長さまでの範囲にクランプします。 |
AssetBundles |
SoftObjectPtr または SoftObjectPath プロパティに使用されます。この参照がどのバンドルの一部であるかを指定するための、プライマリ データ アセット内で使用されるバンドル名のリスト。 |
BlueprintBaseOnly |
Subclass および SoftClass プロパティに使用されます。クラス ピッカーにブループリント クラスのみを表示するかどうかを示します。 |
BlueprintCompilerGeneratedDefaults |
プロパティのデフォルトはブループリント コンパイラによって生成されます。コンパイル後に CopyPropertiesForUnrelatedObjects 関数が呼び出されたときにはコピーされません。 |
ClampMin="N" |
浮動小数点および整数プロパティに使用されます。プロパティに入力できる最小値 N を指定します。 |
ClampMax="N" |
浮動小数点および整数プロパティに使用されます。プロパティに入力できる最大値 N を指定します。 |
ConfigHierarchyEditable |
このプロパティは、コンフィグ ファイル (.ini ) にシリアル化され、コンフィグ階層内の任意の場所に設定できます。 |
ContentDir |
FDirectoryPath プロパティによって使用されます。「Content 」フォルダ内の Slate スタイルのディレクトリ ピッカーを使用してパスが選択されることを示します。 |
DisplayAfter="PropertyName" |
このプロパティは、両方のプロパティが同じカテゴリにある限り、ソース コード内の順序に関係なく、PropertyName という名前のプロパティの直後にブループリント エディタに表示されます。複数のプロパティの DisplayAfter 値と DisplayPriority 値が同じである場合、それらのプロパティが、ヘッダ ファイルで宣言されている順序で、名前付きプロパティの後に表示されます。 |
DisplayName="Property Name" |
コードによって生成された名前の代わりに、このプロパティに表示される名前。 |
DisplayPriority="N" |
2 つのプロパティが同じ DisplayAfter 値を持つ場合、または同じカテゴリにあり、DisplayAfter メタタグがない場合、このプロパティによって並べ替え順序が決まります。最も優先度の高い値は「1」です。つまり、DisplayPriority 値が「1」のプロパティは、DisplayPriority 値が「2」のプロパティよりも上に表示されます。複数のプロパティが同じ DisplayAfter 値を持つ場合、それらはヘッダ ファイルで宣言されている順序で表示されます。 |
DisplayThumbnail="true" |
プロパティがアセット タイプであり、選択したアセットのサムネイルを表示することを示します。 |
EditCondition="BooleanPropertyName" |
このプロパティの編集が無効かどうかを示すために使用されるブール プロパティに名前を付けます。プロパティ名の前に "!" を付けるとテストが反転します。 |
EditFixedOrder |
配列の要素がドラッグによって並べ替えられないようにします。 |
ExactClass="true" |
AllowedClasses と組み合わせて FSoftObjectPath プロパティに使用されます。AllowedClasses で指定された正確なクラスのみが使用可能か、またはサブクラスも有効かを示します。 |
ExposeFunctionCategories="Category1, Category2, .." |
ブループリント エディタで関数リストをビルドするときに、関数を公開するカテゴリのリストを指定します。 |
ExposeOnSpawn="true" |
このクラス タイプの Spawn Actor ノードでプロパティを公開するかどうかを指定します。 |
FilePathFilter="FileType" |
FFilePath プロパティによって使用されます。ファイル ピッカーに表示するパス フィルタを示します。共通の値には「uasset」や「umap」などがあります。ただし、他にも使える値はあります。 |
GetByRef |
このプロパティの「Get」ブループリント ノードが、値のコピーではなく、プロパティへの const 参照を返すようにします。Sparse Class Data でのみ使用可能です。そして、NoGetter が存在しない場合にのみ使用できます。 |
HideAlphaChannel |
FColor および FLinearColor プロパティに使用されます。詳細にプロパティ ウィジェットを表示する際、Alpha プロパティを非表示にすることを示します。 |
HideViewOptions |
Subclass および SoftClass プロパティに使用されます。クラス ピッカーで表示オプションを変更する機能を非表示にします。 |
InlineEditConditionToggle |
ブール型プロパティは、他のプロパティの編集条件トグルとしてインラインでのみ表示され、独自の行には表示されないことを示します。 |
LongPackageName |
FDirectoryPath プロパティによって使用されます。パスを長いパッケージ名に変換します。 |
MakeEditWidget |
Transform または Rotator プロパティ、あるいは Transform または Rotator の配列に使用されます。プロパティを移動可能なウィジェットとしてビューポートに公開する必要があることを示します。 |
NoGetter |
ブループリント生成で、このプロパティの「get」ノードが生成されないようにします。Sparse Class Data でのみ使用可能です。 |
ScriptName="DisplayName" |
このクラス、プロパティ、または関数をスクリプト言語にエクスポートするときに使用する名前。非推奨の名前を、セミコロンで区切った追加のエントリとして含めることができます。 |