【UE5】UPROPERTY【C++】

実際につくってみて、学んだこと気づいたこと調べたことをまとめています。

👇C++完全初心者の方は、下記の記事をどうぞ。

👇初心者でも、とても分かりやすくて良い動画。

UE4 – Blueprints to C++ Episode 2 – UPROPERTY

UPROPERTY SPECIFIERS

ここでは、Detailsパネルの呼び方を2つに分けようと思う。
Instance
Viewport上に置いた、各オブジェクトの情報が載っているものをInstanceと呼ぶ。

Defaults

各アクターを開いたときに表示される、アクターやコンポーネントの情報が載っているものをDefaultsと呼ぶ。

Instance Only:Instanceだけに表示。
Defaults Only:Defaultsだけに表示。

Anywhere:InstanceとDefaultsの両方に表示。

👇ここのDetailsパネルがInstance。

👇ここのDetailsパネルがDefaults。

カテゴリーがMy Actorとなっているのは、C++にコードを書いたから。

Visible:見ることはできるが、編集はできない。グレーアウトしている。
Edit:見ることも編集も出来る。

VisibleでもSetノードで数値を変更することは可能。もちろんGetノードも使える。

Blueprintで、GetもSetもできる。

Blueprintで、GetはできるがSetはできない。

UCLASS()
class ANDROIDTEST_API AMyActor : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	AMyActor();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyActor")
	float Speed;
	UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "MyActor")
	float ValVisibleAnywhere = 11;
	UPROPERTY(VisibleDefaultsOnly, BlueprintReadWrite, Category = "MyActor")
	float ValVisibleDefaultsOnly = 12;
	UPROPERTY(VisibleInstanceOnly, BlueprintReadWrite, Category = "MyActor")
	float ValVisibleInstanceOnly = 13;
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyActor")
	float ValEditAnywhere = 21;
	UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "MyActor")
	float ValEditDefaultsOnly = 22;
	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Category = "MyActor")
	float ValEditInstanceOnly = 23;
};

META TAG

表示名を変えられる。

使用例

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyActor", meta=(DisplayName="Actor Speed"))
float Speed;

Speedではなく、Actor Speedと表示されるようになる。

説明、最小値、最大値をあたえる。

使用例

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyActor", meta=(DisplayName="Actor Speed", Tooltip="the speed of the actor", ClampMin="20", ClampMax="100"))
float Speed;

マウスをホバーさせると説明がでる。最小値が20、最大値が100になる。

AllowPrivateAccessをtrueにすれば、Privateのときも変数を定義できる。(基本的にBlueprintReadOnlyやBlueprintReadWriteはpublicとprotectedのときのみ使える。)

使用例

private:

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Category = "MyActor", meta=(AllowPrivateAccess="true"))
	float ValEditInstanceOnly = 23;

これに何の利点があるかは、僕にはまだ分からない。

その他の知識

カテゴリーを” | “で区切るとサブカテゴリーができる。

コード

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyActor", meta=(DisplayName="Actor Speed", Tooltip="the speed of the actor", ClampMin="20", ClampMax="100"))
	float Speed;
	UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "MyActor|Anywhere")
	float ValVisibleAnywhere = 11;
	UPROPERTY(VisibleDefaultsOnly, BlueprintReadWrite, Category = "MyActor|Default")
	float ValVisibleDefaultsOnly = 12;
	UPROPERTY(VisibleInstanceOnly, BlueprintReadWrite, Category = "MyActor|Instance")
	float ValVisibleInstanceOnly = 13;
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyActor|Anywhere")
	float ValEditAnywhere = 21;
	UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "MyActor|Default")
	float ValEditDefaultsOnly = 22;

private:

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Category = "MyActor|Instance", meta=(AllowPrivateAccess="true"))
	float ValEditInstanceOnly = 23;

Instance

Defaults

・基本的に頭文字は大文字にする。
・例外として、ブール値は小文字のbからはじめる。
・基本的にはpublicかprotectedを使う。

意味:指定子

大文字、小文字

Twitterしてます

ブログの更新をお知らせ

コメント

タイトルとURLをコピーしました