第一篇写好了接口,这篇来写具体实现。
首先是State类,他要实现IState接口:
public class JyState : IState
{
public string Name { get { return _name; } }
public string Tag
{
get { return _tag; }
set { _tag = value; }
}
public float Timer { get { return _timer; } }
public IStateMachine Parent { get { return _parent; } }
public List<ITransition> Transitions { get { return _transitions; } }
public JyState(string name)
{
_name = name;
_transitions = new List<ITransition>();
}
/// <summary>
/// 添加状态转换
/// </summary>
/// <param name="transition"></param>
public void AddTransition(ITransition transition)
{
if(!_transitions.Contains(transition))
_transitions.Add(transition);
else
{
// log warining : 该转换已经存在
}
}
/// <summary>
/// 进入本状态
/// </summary>
/// <param name="prev"></param>
public virtual void OnEnter(IState prev)
{
_timer = 0;
_index = 0;
_isWork = true;
}
/// <summary>
/// 离开本状态
/// </summary>
/// <param name="next"></param>
public virtual void OnExit(IState next)
{
_timer = 0;
_index = 0;
_isWork = false;
}
///