Iterador de objeto / actor de notas UE4

01 Iterador de objeto

Los iteradores de objetos son herramientas muy útiles que se pueden usar para iterar todas las instancias de un tipo específico de UObject y sus subclases.

// 查找所有当前UObject实例
for (TObjectIterator<UObject> It; It; ++It)
{
    
    
    UObject* CurrentObject = *It;
    UE_LOG(LogTemp, Log, TEXT("Found UObject named:%s"), *CurrentObject->GetName());
}

Puede limitar el alcance de la búsqueda proporcionando un tipo más específico para el iterador. Suponga que tiene una clase llamada UMyClass, que se deriva de UObject. Puede encontrar todas las instancias de esta clase (y las instancias derivadas de ella) así:

for (TObjectIterator<UMyClass> It; It; ++It)
{
    
    
    // ...
}

El uso de iteradores de objetos en PIE (ejecutado en el editor) puede generar resultados inesperados. Dado que se ha cargado el editor, el iterador de objetos devolverá todas las instancias de UObject creadas para la instancia de la escena del juego, además de las instancias utilizadas por el editor.

02 Actor iterador

Los iteradores de actor son muy similares a los iteradores de objeto, pero solo se aplican a objetos derivados de AActor. El iterador Actor no tiene los problemas mencionados anteriormente y solo devuelve los objetos utilizados por la instancia de la escena del juego actual.

Al crear un iterador Actor, debe especificar uno para él 指向 UWorld 的指针. Muchas clases de UObject como APlayerController proporcionan un método GetWorld para ayudarlo. Si no necesita estar seguro, puede verificar el método ImplementsGetWorld en UObject para confirmar si implementa el método GetWorld.


APlayerController* MyPC = GetMyPlayerControllerFromSomewhere();
UWorld* World = MyPC->GetWorld();

// 正如对象迭代器一样,您可以提供一个具体类来仅获得
// 属于该类或派生自该类的对象
for (TActorIterator<AEnemy> It(World); It; ++It)
{
    
    
    // ...
}

Supongo que te gusta

Origin blog.csdn.net/qq_41363459/article/details/111339662
Recomendado
Clasificación