概述
所有的状态间的过渡都是由事件触发的。
使用Event Manager 来添加/编辑事件。
有两种基础类型的事件:
1.系统事件:自动发送;不能编辑或删除。
2.用户事件:你可以使用你想要的自定义事件。
系统事件
按照惯例,系统事件都是大写的。
事件 | 描述 | Unity 文档 |
---|---|---|
START | 状态机启动时发送. | N.A. |
FINISHED | 当激活状态所有的动作完成时发送. 见Actions. | N.A. |
LEVEL LOADED | 新关卡加载后发送. | OnLevelWasLoaded |
BECAME VISIBLE | 当游戏对象对任何相机可见时发送. | OnBecameVisible |
BECAME INVISIBLE | 当游戏对象不再对任何相机可见时发送. | OnBecameInvisible |
COLLISION ENTER | 当游戏对象第一次与另一对象碰撞时发送. | OnCollisionEnter |
COLLISION EXIT | 当游戏对象结束与另一对象碰撞时发送. | OnCollisionExit |
COLLISION STAY | 当游戏对象结束与另一对象保持碰撞时发送. | OnCollisionStay |
MOUSE DOWN | 当鼠标点击游戏对象时发送. | OnMouseDown |
MOUSE DRAG | 当鼠标按下并在游戏对象上时发送. | OnMouseDrag |
MOUSE ENTER | 当鼠标在游戏对象上滑入时发送. | OnMouseEnter |
MOUSE EXIT | 当鼠标在游戏对象上滑出时发送. | OnMouseExit |
MOUSE OVER | 当鼠标在游戏对象上时发送. | OnMouseOver |
MOUSE UP | 当鼠标在游戏对象释放上时发送. | OnMouseUp |
TRIGGER ENTER | 当游戏对象进入一个触发器时发送. | OnTriggerEnter |
TRIGGER EXIT | 当游戏对象退出一个触发器时发送. | OnTriggerExit |
TRIGGER STAY | 当游戏对象保持在一个触发器时发送. | OnTriggerStay |
CONTROLLER COLLIDER HIT | 当游戏对象上的角色控制器与一个对象碰撞时发送 | OnContollerColliderHit |
备注
上面的“游戏对象”指拥有有限状态机(FSM)的游戏对象。
在COLLISION 或者 TRIGGER 事件后,你可以使用 GetCollisionInfo, GetTriggerInfo, 或 GetControllerHitInfo 来决定如何应对碰撞。
MOUSE事件在状态机里控制GUIText或GUITexture 组件是很有用的。见 GUI Element Actions。
用户事件
在Event Manager里添加任意你想控制状态机的事件。
发送事件
发送事件给一个FSM有一些方式:
使用动作
使用动画事件
由脚本发送事件
由动作发送事件
发送一个事件的最基本的动作:
其他基于条件发送事件的动作: 有很多 ( LOTS )归类的动作可供快速访问!
动画事件
你可以使用Unity的动画窗口来发送事件给状态机。
见 Sending Animation Events to an FSM
译文源自:
https://hutonggames.fogbugz.com/default.asp?W128