技術的には、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);
}
}