为什么GetAllActorsOfClass返回空?

12

我有一个PlayerControl.cpp类,它继承自Pawn类。

在这个类中,我有一个获取地图中所有角色的方法。

TSubclassOf<AEnemy> ClassToFind;
 TArray<AActor*> FoundEnemies;
 UGameplayStatics::GetAllActorsOfClass(GetWorld(), ClassToFind, FoundEnemies);

但 FoundEnemies 数组始终为空,在蓝图中执行相同的操作可以正常工作。

有人能告诉我为什么在 C++ 中这不起作用吗?或者如果我做错了,应该怎么正确地做?


我们这里缺少相当多的代码来帮助你。首先,请尝试使用小写字母编写变量名称。这是大多数标准,并且会让其他人更加清晰易懂。其次,GetAllActorsOfClass是否通过引用获取数组? - Hayt
@Hayt 这是一个虚幻引擎特有的方法,在普通的C++中你找不到 GetAllActorsOfClass,很抱歉,请下次在评论、回答或投票之前检查问题的标签。 - Kas
它仍然缺乏信息。我假设AEnemy是你的类?它是如何声明的?你如何将它们添加到世界中?任何可能导致你的代码不按预期运行的因素。(如果这是所有原生虚幻引擎代码,没有你的任何东西,那么这将是虚幻引擎的一个错误;) - Hayt
8
在UE4中使用大写变量实际上是标准做法,因此我认为对帖子进行的编辑是不必要的。 - Bas in het Veld
@BasinhetVeld,确实,你是正确的。 - Kas
显示剩余4条评论
1个回答

20

最终,我找到了自己问题的答案。

我应该为变量 "ClassToFind" 分配一个值。 因此,添加以下行 classToFind = AEnemy::StaticClass(); 可以解决问题。

TSubclassOf<AEnemy> classToFind;
    classToFind = AEnemy::StaticClass();
    TArray<AActor*> foundEnemies;
    UGameplayStatics::GetAllActorsOfClass(GetWorld(), classToFind, foundEnemies);

4
你甚至可以跳过classToFind这个变量,直接使用以下代码:UGameplayStatics::GetAllActorsOfClass(GetWorld(), AEnemy::StaticClass(), foundEnemies); 该代码会获取世界中所有AEnemy类的实例,并将它们存储到foundEnemies数组中。请注意不要改变原始意思,使翻译更通俗易懂。 - Phillip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接