如何将类作为参数传递给UnrealScript中的函数?

时间:2013-02-07 16:58:46

标签: unrealscript

我想做

result = TraceActors(class'QuadForcePawn', HitEnemy, hitLocation, HitNorm, weaponStart, m_oldWeaponStartLocation[iHand], vExtent);

但我想用变量代替class'QuadForcePawn'部分。我无法弄清楚如何做到这一点。

这样我可以有一个调用TraceActors的函数,该函数接受一个参数,告诉它要查找哪种Actors

1 个答案:

答案 0 :(得分:3)

从技术上讲,TraceActors实际上是iterator function并且意味着与foreach关键字一起使用,因此您实际上不会将结果分配给变量。

要回答您的问题,您要使用的是class reference variable。示例函数可能看起来像这样(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);
    }
}