从技术上讲,TraceActors 实际上是一个迭代器函数,旨在与foreach
关键字一起使用,因此您实际上不会将结果分配给变量。
要回答您的问题,您要使用的是类引用变量。示例函数可能如下所示(TraceActors 实际上需要更多参数,但为简洁起见,我将它们省略了。):
function TraceFor (class<Actor> traceClass)
{
local Actor A;
foreach TraceActors(traceClass, A)
{
// do work here
}
}
类引用变量是用class
关键字声明的,您可以选择使用<>
语法来限制可以分配给它的类。class<Actor>
声明一个类引用变量,该变量只能分配有 Actor 或 Actor 的子类。在上面的示例函数中,调用TraceFor(class'Pawn')
会正常工作,但调用TraceFor(class'Object')
会编译失败。
如果要返回 TraceActors 调用的结果,一种方法可能是构建结果数组并返回:
// Returns an array of Actors of the passed in type.
function TraceFor (class<Actor> traceClass, out array<Actor> results)
{
local Actor A;
foreach TraceActors(traceClass, A)
{
results.AddItem(A);
}
}