fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

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」の指定が必要になります。

こんな感じの記述になります。
まずはインスタンスを作成するクラスを作成します。

// 変数でインスタンスを作成するためのクラス
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;

};


これを実行してみるとこんな感じになります。
Instanced000.jpg
詳細で設定できる変数にクラスを設定する項目が作成されました。

この項目に先ほど定義したクラスを設定します。
Instanced001.jpg

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

C++でやる場合はソースでインスタンスの追加自体はできるのでそんなに便利じゃないかなと思ったのですが
インスタンスの変数をエディタ上から設定できる。というのは使い勝手が良いのかもしれません。

ここらへん上手い使い方を知っていきたいところではあります!

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/743-aa632959

TRACKBACK

PREV | PAGE-SELECT | NEXT