UE5/UE4 C++で変数にクラス(Class)のインスタンス(Instance)をプロパティ指定子(Property Specifiers)を使って指定する(UPROPERTY(Instanced)、UCLASS(EditInlineNew))
C++で変数にクラス(Class)のインスタンス(Instance)をプロパティ指定子(Property Specifiers)を使って指定する方法です。
こちらを参考にさせていただきました。
・UE4 よく使うUPROPERTYメモ
https://qiita.com/bigengelt/items/b17545fffe7b8d69e5e8
クラス変数にインスタンス(Instance)を設定するには
「UPROPERTY」で「Instanced」と指定することで実装することができます。
インスタンスを作成するクラスには「UCLASS」で「EditInlineNew」の指定が必要になります。
こんな感じの記述になります。
まずはインスタンスを作成するクラスを作成します。
次に上記クラスをインスタンスを作成するクラスとして設定するための変数をクラスに定義します。
これを実行してみるとこんな感じになります。

詳細で設定できる変数にクラスを設定する項目が作成されました。
この項目に先ほど定義したクラスを設定します。

するとこんな感じで実行時にインスタンスが作成され、
なおかつ、詳細ウィンドウでインスタンスが持つ変数に値を設定することができるようになりました。

C++でやる場合はソースでインスタンスの追加自体はできるのでそんなに便利じゃないかなと思ったのですが
インスタンスの変数をエディタ上から設定できる。というのは使い勝手が良いのかもしれません。
ここらへん上手い使い方を知っていきたいところではあります!
こちらを参考にさせていただきました。
・UE4 よく使うUPROPERTYメモ
https://qiita.com/bigengelt/items/b17545fffe7b8d69e5e8
クラス変数にインスタンス(Instance)を設定するには
「UPROPERTY」で「Instanced」と指定することで実装することができます。
インスタンスを作成するクラスには「UCLASS」で「EditInlineNew」の指定が必要になります。
こんな感じの記述になります。
まずはインスタンスを作成するクラスを作成します。
// 変数でインスタンスを作成するためのクラス
UCLASS(EditInlineNew)
class UDebugInstancedClass : public UObject
{GENERATED_BODY()public:// 詳細で設定させたい変数};
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bInstancedBool;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 InstancedValue;
次に上記クラスをインスタンスを作成するクラスとして設定するための変数をクラスに定義します。
// インスタンスを設定する変数を持つクラス
UCLASS()
class ADebugActor : public AActor
{GENERATED_BODY()public:// インスタンスを設定する変数
UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced)
TObjectPtr< UDebugInstancedClass> DebugInstancedClass;};
これを実行してみるとこんな感じになります。

詳細で設定できる変数にクラスを設定する項目が作成されました。
この項目に先ほど定義したクラスを設定します。

するとこんな感じで実行時にインスタンスが作成され、
なおかつ、詳細ウィンドウでインスタンスが持つ変数に値を設定することができるようになりました。

C++でやる場合はソースでインスタンスの追加自体はできるのでそんなに便利じゃないかなと思ったのですが
インスタンスの変数をエディタ上から設定できる。というのは使い勝手が良いのかもしれません。
ここらへん上手い使い方を知っていきたいところではあります!
| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑