有限状态机FSM详解(二)

本文主要介绍了有限状态机FSM的实现,包括State类、StateMachine状态机和StateTransition状态转换的接口实现。以游戏角色的移动、跳跃、攻击、待机四种状态为例,展示FSM的实际应用。
摘要由CSDN通过智能技术生成

第一篇写好了接口,这篇来写具体实现。

首先是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;
        }

        /// 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值