小编Mis*_*abs的帖子

如何列出 ULevelStreaming 中的所有演员?

我找不到列出子关卡(LevelStreaming)内所有 Actor 的方法。对于枚举,我尝试使用 TActorIterator,但它的构造函数接受对 UWorld 的引用,它不接受对 ULevelStreaming 的引用,因为它们都继承自 UObject,而 ULevelStreaming 不继承自 UWorld。我可以这样列出世界上所有的演员:

  UWorld* world = GetWorld();
    TActorIterator<AActor> Iterator(world, AActor::StaticClass());
    for (; Iterator; ++Iterator)
    {
        AActor* Actor = Cast<AActor>(*Iterator);
        GEngine->AddOnScreenDebugMessage(-1, 30.f, FColor::Yellow, Actor->GetFName().ToString());  //Print name of the Actor

    }
Run Code Online (Sandbox Code Playgroud)

这可行,但我只从主地图(持久级别)获取对象,并且我不知道如何从我添加为 ULevelStreaming 的附加级别获取所有 Actor 的列表。这是我的尝试(不起作用):

    UWorld* world = GetWorld();
auto levels = world->GetStreamingLevels();
for (auto level : levels) {
    ULevelStreaming* currentLevel = Cast<ULevelStreaming>(level);
    TActorIterator<AActor> It(currentLevel, AActor::StaticClass()); //Here is compiler error with TActorIterator's constructor
    for (; It; ++It)
    {
        AActor* Actor = Cast<AActor>(*It); …
Run Code Online (Sandbox Code Playgroud)

c++ unreal-engine4

3
推荐指数
1
解决办法
4923
查看次数

标签 统计

c++ ×1

unreal-engine4 ×1