UnrealScript Actor迭代器
ACTOR类的迭代器
以下所有迭代器的前两个参数是一样的: BaseClass和Actor. 同样,BaseClass类用于过滤类,它仅通过返回结果判断那个类是否真正地继承了给定的类,比如上面示例中的pawn类。第二个参数Actor,它是一个传入的变量,用于存放从迭代器返回的当前项。和上面的示例一样,这是您如何在迭代过程中从当前项进行操作或获取数据的方式。
AllActors ( class<actor> BaseClass, out actor Actor, optional name MatchTag )
这个迭代器的目的是迭代继承给定类的所有actors。
DynamicActors( class<actor> BaseClass, out actor Actor )
这个迭代器用于搜索获得自关卡启动后所创建的actors。当查找关卡中动态地创建的角色时这是非常地有用的。
ChildActors( class<actor> BaseClass, out actor Actor )
这用于找到当前调用该迭代器的actor的所有子项actor。这意味着这个迭代器仅返回这个Actor所具有的actors,也就是其actor的Owner属性指向调用该迭代器的Actor。
BasedActors( class<actor> BaseClass, out actor Actor )
这个迭代器用于找出所有基于当前actor的actor,这意味着这些actor的Base属性指向调用这个迭代器的Actor。
TouchingActors( class<actor> BaseClass, out actor Actor )
个迭代器便可以获取正在接触当前actor的所有actors。当一个actor接触另一个actor时,该actor会被添加到另一个actor的Touching数组中。这个迭代器循环那个数组,并返回包含在那个数组中的每个actor。
TraceActors( class<actor> BaseClass, out actor Actor, out vector HitLoc, out vector HitNorm, vector Extent)
当您想跟踪一个向量并找出被那个向量接触的所有actors时可以使用这个迭代器。
OverlappingActors( class<actor> BaseClass, out actor Actor, float Radius, optional vector Loc, optional bool bIgnoreHidden)
如果您想找到位于特定球体半径内的所有actors,那么可以使用这个迭代器。它将返回位于特定位置处的指定半径内的所有actors
VisibleActors( class<actor> BaseClass, out actor Actor, optional float Radius, optional vector Loc )
这个VisibleActors迭代器提供了迭代当前在某特定位置可见的所有actors的一种方法。
VisibleCollidingActors ( class<actor> BaseClass, out actor Actor, float Radius, optional vector Loc, optional bool bIgnoreHidden)
提供了获得给定半径内的所有actors的一种快捷方法。
CollidingActors ( class<actor> BaseClass, out actor Actor, float Radius, optional vector Loc, option al bool bIgnoreHidden)
CollidingActors迭代器函数和VisibleCollidingActors()迭代器类似,但是它迭代的是所有碰撞的actor,无论该actor是否可见。
WORLDINFO 类的迭代器
AllNavigationPoints(class<NavigationPoint> BaseClass, out NavigationPoint N);
这个函数允许您迭代NavigationPointList(导航节点列表)中的所有NavigationPoints(导航节点)。当创建新的AI导航行为时,这个功能是非常有用的。
RadiusNavigationPoints(class<NavigationPoint> BaseClass, out NavigationPoint N, vector Point, float Radius)
这个迭代器和导航节点迭代器类似,但是它允许您指定导航节点的所在半径。
AllControllers(class<Controller> BaseClass, out Controller C)
这个迭代器允许您迭代当前关卡中的所有Controller(控制器)。
AllPawns(class<Pawn> BaseClass, out Pawn P, optional vector TestLocation, optional float TestRadius)
这个迭代器允许您迭代当前关卡中的所有Pawns。
SKELETALMESHCOMPONENT类的迭代器
AttachedComponents(class<ActorComponent> BaseClass, out ActorComponent OutComponent);
这个迭代器迭代所有附加到SkeletalMeshComponent上的组件。
AllAnimNodes(class<AnimNode> BaseClass, out AnimNode Node);
这个迭代器函数将会循环和SkeletalMeshComponent(骨架网格物体组件)相关的AnimTree中包含的所有AnimNodes(动画节点)。
迭代动态数组
UnrealScript现在提供了支持迭代动态数组的功能。有两种基本的方法来完成这个处理:
foreach ArrayVariable(out ArrayItem)
foreach ArrayVariable(out ArrayItem, optional out ItemIndex)
这两种方法都可以迭代给定的数组,但是第二种方法将会使得ItemIndex变量渐增。
foreach AllActors(class'MasteringUnrealScript.PelletNode',CurrNode) { foreach CurrNode.VisibleActors(class'MasteringUnrealScript.PelletNode',CurrVisNode) ... }