C++で取得
// アウトライナーからAActorをすべて取得
TArray<AActor*> Actors;
UGameplayStatics::GetAllActorsOfClass(GetWorld(), AActor::StaticClass(), Actors);
for (AActor* Actor : Actors)
{
if (AHoge* Hoge = Cast<AHoge>(Actor))
{
HogeArray.Add(Hoge);
}
}
これで特定のアクタを取得できるが効率が悪い気がする。
エディタ上でも取得できるのでそれで良いだろう。
UPROPERTY()のこと
UPROPERTY(EditAnywhere) エディタ上で編集可能
UPROPERTY(VisibleAnywhere) エディタ上で閲覧可能
大体これしか使わなかった。
細かく説明するとすると以下の表のように結構ある。
参考サイト様
| 引数 | 説明 |
|---|---|
| EditAnywhere | レベルエディターおよびブループリントエディター上での閲覧・編集が可能 |
| EditDefaultsOnly | ブループリントエディター上での閲覧・編集が可能 |
| EditInstanceOnly | レベルエディター上での閲覧・編集が可能 |
| VisibleAnywhere | レベルエディターおよびブループリントエディター上での閲覧のみが可能 |
| VisibleDefaultsOnly | ブループリントエディター上での閲覧のみが可能 |
| VisibleInstanceOnly | レベルエディター上での閲覧のみが可能 |
| BlueprintReadOnly | ブループリントエディター上でGetのみ公開 |
| BlueprintReadWrite | ブループリントエディター上でGet・Setの両方を公開 |
| Category = “TopCategory|SubCategory|…” | ブループリントエディター上で表示される際のプロパティのカテゴリを設定 |
Categoryは結構使ったと思う。
このように、編集可能にしておき、ワールドに配置後、同ワールド内の要素を設定するのもありだし正直そのほうが楽な場合もある。
UPROPERTY()はUFUNCTION()、UCLASS()、UENUM()、USTRUCT()と数種あるがタイトルとかけ離れてくるため説明はしない。