遍历所有SkeletalMeshComponent
//遍历所有的SkeletalMeshComponent
for (TObjectIterator<USkeletalMeshComponent> Itr; Itr; ++Itr)
{
USkeletalMeshComponent* Component = *Itr;
FString str = Itr->GetName();
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("%s"), *str));
}
//遍历所有的StaticMeshActor
for (TActorIterator<AStaticMeshActor> ActorItr(GetWorld()); ActorItr; ++ActorItr)
{
AStaticMeshActor* Mesh = *ActorItr;
FString str1 = ActorItr->GetName();
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("%s"), *str1));
FString str2 = ActorItr->GetActorLocation().ToString();
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("%s"), *str2));
}
遍历所有Character
for (TActorIterator<ACharacter> ActorItr(GetWorld()); ActorItr; ++ActorItr)
{
if (ActorItr->GetName().Contains("beiminghuoque"))
{
AMyCharacter* Warrior = (AMyCharacter*)*ActorItr;
FString msg = FString::Printf(TEXT("#########:%d"), (int)Warrior->State());
GEngine->AddOnScreenDebugMessage(-1, 10.f, FColor::Red, msg);
}
}
遍历所有自定义Character
for (TActorIterator<AMyCharacter> ActorItr(GetWorld()); ActorItr; ++ActorItr)
{
}
注意
如果用不带GetWorld()的方式遍历,比如这种方式:
for (TObjectIterator<AMyCharacter> Itr; Itr; ++Itr)
则当编辑器中打开蓝图后(双击蓝图),该蓝图也会出被遍历出来。不打开则不在遍历范围内。.
for (FConstPawnIterator Itr = GetWorld()->GetPawnIterator(); Itr; ++Itr)
for (TActorIterator<AMyCharacter> ActorItr(GetWorld()); ActorItr; ++ActorItr)
这两种不会,它们只会遍历游戏运行时期间的对象。