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)
        ...
    }
posted @ 2013-02-23 12:57  Flyingpig  阅读(387)  评论(0编辑  收藏  举报