プロパティの宣言
プロパティは標準の 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 (詳細)] パネルに表示するときに、ratio のロックが追加されます。 |
ArrayClamp="ArrayProperty" |
integer のプロパティに使用されます。UI に入力する有効な値を 0 と配列のプロパティの名前の長さにクランプします。 |
AssetBundles |
SoftObjectPtr または SoftObjectPath のプロパティで使用します。Primary Data Assets 内で使用されるバンドル名のリストで、参照がどのバンドルの一部であるかを指定します。 |
BlueprintBaseOnly |
Subclass と SoftClass のプロパティで使用されます。クラス ピッカーで Blueprint クラスのみを表示するかを示します。 |
BlueprintCompilerGeneratedDefaults |
ブループリントのコンパイラによってプロパティのデフォルトが生成されて、コンパイル後に CopyPropertiesForUnrelatedObjects 関数が呼び出されてもコピーされません。 |
ClampMin="N" |
float と integer のプロパティに使用されます。プロパティに入力可能な最小値、N を指定します。 |
ClampMax="N" |
float と integer のプロパティに使用されます。プロパティに入力可能な最大値、N を指定します。 |
ConfigHierarchyEditable |
このプロパティは、 config (.ini ) ファイルにシリアル化されて、 config 階層のどこにでも設定することができます。 |
ContentDir |
FDirectoryPath プロパティによって使用されます。このパスは、Content フォルダ内のスレート スタイルのディレクトリ ピッカーを使って選ぶことができます。 |
DisplayAfter="PropertyName" |
このプロパティは、ブループリント エディタでの中で、プロパティが両方とも同じカテゴリにある限り、ソースコードの順番に関係なく PropertyName という名前のプロパティの直後に表示されます。複数のプロパティの DisplayAfter 値と DisplayPriority 値が同じ場合、ヘッダ ファイルで宣言された順番で、名前付きプロパティの後に表示されます。 |
DisplayName="Property Name" |
コードが生成する名前の代わりになるプロパティの表示名です。 |
DisplayPriority="N" |
2 つのプロパティの DisplayAfter 値が同じである、または同じカテゴリで DisplayAfter メタ タグがない場合にこのプロパティがソート順を決定します。優先度が高い値は 1 です。つまり、, meaning that a property with a DisplayPriority 値が 1 のプロパティは DisplayProirity 値が 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" Blueprint ノードに、その値のコピーではなく const 参照をプロパティに返させます。Sparse Class Data を使ってのみ、NoGetter が存在しない場合のみ使用可能です。 |
HideAlphaChannel |
FColor プロパティと FLinearColor プロパティで使用されます。詳細で、プロパティ ウィジェットを表示するときに Alpha プロパティが非表示になることを示します。 |
HideViewOptions |
Subclass と SoftClass のプロパティで使用されます。クラス ピッカーで表示オプションを変更する機能を隠します。 |
InlineEditConditionToggle |
他のプロパティで切り替わり、単独では表示されない編集条件として、ブール プロパティはインラインでのみ表示されることを表します。 |
LongPackageName |
FDirectoryPath プロパティによって使用されます。パスを長いパッケージ名に変換します。 |
MakeEditWidget |
Transform プロパティ、Rotator プロパティ、または Transforms、Rotators の配列で使用されます。移動可能なウィジェットとしてプロパティがビューポートに公開されることを示します。 |
NoGetter |
ブループリント生成がこのプロパティに対して "get" ノードを生成しないようにします。Sparse Class Data でのみ使用可能です。 |