実際につくってみて、学んだこと気づいたこと調べたことをまとめています。
👇C++完全初心者の方は、下記の記事をどうぞ。
👇初心者でも、とても分かりやすくて良い動画。
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してます
ブログの更新をお知らせ
コメント