2013-02-07 126 views
0

我想做如何在UnrealScript中将类作为参数传递给函数?

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

,但我想替换的变量为class'QuadForcePawn'一部分。我一直无法弄清楚如何做到这一点。

这是我可以有一个函数,调用TraceActors,该函数需要一个参数告诉它寻找哪种Actors

回答

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); 
    } 
} 
+0

伟大的答案,谢谢! – Almo

相关问题