概述
每个状态激活的时候都有一个动作列表去执行。
每个动作都有一个指定的目的:播放一个动画、朝目标移动一个游戏物体( game object)、测试一个碰撞等等。
简单的动作结合起来能够制造复杂的行为。
执行顺序
动作是按照排列的顺序来被激活的,由上至下。你可以拖拽动作来重排它们。
重要提示:整个"动作堆栈"每帧都被执行,所以同一时间可以有多个动作是激活的(例如, Move Towards 和 Look At )
重要提示:如果动作触发了一个过渡,则过渡会立即发生并且之下的动作将不被执行。
动作生命周期
动作在所属状态变激活的时候被激活。
当被激活时,动作Start,然后每帧Update直到它们Finish或者状态Exited。
列表里未完成的动作每帧都会按照从上到下的顺序被更新。
状态监视器(State Inspector )里被颜色标记的动作表示它们当前是激活的。例如
按下播放(Play)后介绍(Intro)状态变得激活然后它的所有动作都被激活。
1秒钟过后, Camera Fade In 动作完成。动作变淡表明完成。
状态激活后的10秒钟, Wait 动作完成然后淡出。
重要提示:记住动作是同时运行的,Wait动作运行了总共的时间!
需要按顺序运行的动作应该在单独的状态中由过渡(transition)连起来。
"完成"(finish)是什么意思?
每个动作有自己的完成条件。条件通常是显而易见的:
一些动作立即完成: Set Material, Stop Animation, Enable Behaviour ...
一些动作需要耗时完成: Move Towards, Camera Fade In, Float Interpolate ...
一些动作绝对不会完成而且被设计成只要状态是激活的则为激活: Blink, Flicker, Mouse Pick Event ...
很多的动作有一个 "Every Frame"选项来告知它们是否每一帧重复:
· Every Frame设置为True:动作每帧重复并且不会完成直到状态退出。
· Every Frame设置为False:动作执行一次并完成。
完成事件(FINISHED Event)
一个状态上的所有动作都完成时,会发送一个FINISHED 事件至状态机。
你可以使用这个事件来过渡到另一个状态。
见Events。
也见:
译文源自: