Beispiel #1
0
 /// <summary>
 /// 向列表中增加状态
 /// </summary>
 /// <param name="fsmState"></param>
 public void AddFSMState(FSMState fsmState)
 {
     if (fsmStates == null)
     {
         Debug.Log("新加入的状态为空");
         //  return;
     }
     //状态列表中什么都没有的时候
     if (fsmStates.Count == 0)
     {
         fsmStates.Add(fsmState);
         currentState    = fsmState;
         currentActionID = fsmState.ID;
         return;
     }
     //要加入的状态是不是再列表中存在
     foreach (FSMState state in fsmStates)
     {
         if (state.ID == fsmState.ID)
         {
             Debug.Log("状态已经存在");
             return;
         }
     }
     //如果不存在则加入状态
     fsmStates.Add(fsmState);
 }
Beispiel #2
0
 /// <summary>
 /// 向字典中添加状态
 /// </summary>
 public void AddTransition(Transition trans, FSMActionID actionID)
 {
     //如果包含就停止
     if (map.ContainsKey(trans))
     {
         return;
     }
     map.Add(trans, actionID);
     Debug.Log("状态:" + trans + "添加成功");
 }
Beispiel #3
0
 /// <summary>
 /// 删除列表中的状态
 /// </summary>
 public void DeleteState(FSMActionID fsmState)
 {
     foreach (FSMState state in fsmStates)
     {
         if (state.ID == fsmState)
         {
             fsmStates.Remove(state);
             return;
         }
     }
     Debug.Log("当前列表中不存在这个状态");
 }
Beispiel #4
0
    /// <summary>
    /// 转变状态
    /// </summary>
    /// <param name="trans"></param>
    public void PerformTransition(Transition trans)
    {
        FSMActionID id = currentState.GetOutAction(trans);

        currentActionID = id;
        foreach (FSMState state in fsmStates)
        {
            if (state.ID == currentActionID)
            {
                currentState = state;
                break;
            }
        }
    }