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



我想做

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

但是我想用一个变量来代替CCD_ 1部分。我一直想不出该怎么做。

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

从技术上讲,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);
    }
}

相关内容

  • 没有找到相关文章

最新更新