C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

UE4/C++: アクターのメンバー関数内で AActor 派生の任意のユーザー定義型のオブジェクトを列挙する方法

// TActorIterator で AActor 派生の任意のユーザー定義型のオブジェクトを列挙
// AHogePawn は列挙したい AActor 派生のユーザー定義型
// GetWorld() は AActor のメンバー関数
{
  auto counter = 0;
  for ( TActorIterator< AHogePawn > i( GetWorld() ); i; ++i )
    // i は間接参照演算子によりオブジェクトのメンバーへアクセスできるイテレーター
    UE_LOG
    ( LogTemp
    , Log
    , TEXT( "enumerated AHogePawn[%d]: (name)=%s, (has abc tag)=%s" )
    , counter++
    , i->GetName()
    , i->Tags.Contains( "abc" ) ? TEXT( "true" ) : TEXT( "false" )
    );
}

参考2の GetAllActorsOfClass を使う手もあるが単純に列挙したいだけの場合は TActorIterator を使う方がコードがシンプルで楽。

参考

  1. TActorIterator | Unreal Engine API Reference
  2. UGameplayStatics::GetAllActorsOfClass | Unreal Engine API Reference
  3. AActor::GetWorld | Unreal Engine API Reference