概述
所有的状态间的过渡都是由事件触发的。
使用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
原文:http://blog.csdn.net/wlj613613/article/details/19169309