状态类:

  1 using System;
  2 using System.Collections;
  3 using System.Collections.Generic;
  4 using UnityEngine;
  5 
  6 public class State 
  7 {
  8     /// <summary>
  9     /// 存储状态能够转换的列表
 10     /// </summary>
 11     protected List<Type> list = new List<Type>();
 12 
 13     /// <summary>
 14     /// 添加可转换状态到列表中存储
 15     /// </summary>
 16     /// <typeparam name="T"></typeparam>
 17     public void AddTransition<T>() where T :State
 18     {
 19         if (list.Contains(typeof(T)))
 20         {
 21             Debug.LogError("转换状态:" + typeof(T) + "已经有了对应的状态");
 22             return;
 23         }
 24         list.Add(typeof(T));
 25     }
 26 
 27     /// <summary>
 28     /// 从列表中删除某个可转换的状态
 29     /// </summary>
 30     /// <typeparam name="T"></typeparam>
 31     public void DeleteTransition<T>() where T : State
 32     {
 33         if (list.Contains(typeof(T)) == false)
 34         {
 35             Debug.LogWarning("转换条件:" + typeof(T) + "没有存在在map字典内!");
 36             return;
 37         }
 38         list.Remove(typeof(T));
 39     }
 40 
 41     /// <summary>
 42     /// 判断某个类型是否可转换
 43     /// </summary>
 44     /// <param name="type"></param>
 45     /// <returns></returns>
 46     public bool IsTransition(Type type)
 47     {
 48         if (list.Contains(type))
 49         {
 50             return true;
 51         }
 52         return false;
 53     }
 54 
 55     /// <summary>
 56     /// 状态是否启用
 57     /// </summary>
 58     public bool isActive
 59     {
 60         get { return machine.IsCurrentState(GetType()); }
 61     }
 62 
 63     /// <summary>
 64     /// 获取控制当前状态的状态机
 65     /// </summary>
 66     public MachineBehaviour machine
 67     {
 68         get;
 69         internal set;
 70     }
 71 
 72     /// <summary>
 73     /// 状态初始化
 74     /// </summary>
 75     public virtual void Initialize()
 76     {
 77 
 78     }
 79     /// <summary>
 80     /// 进入状态时执行
 81     /// </summary>
 82     public virtual void Enter()
 83     {
 84 
 85     }
 86     /// <summary>
 87     /// 状态Update时执行
 88     /// </summary>
 89     public virtual void Execute()
 90     {
 91 
 92     }
 93     /// <summary>
 94     /// 退出状态时执行
 95     /// </summary>
 96     public virtual void Exit()
 97     {
 98 
 99     }
100     /// <summary>
101     /// 状态FixedUpdate时执行
102     /// </summary>
103     public virtual void FixedExecute()
104     {
105 
106     }
107     /// <summary>
108     /// 状态LateUpdate时执行
109     /// </summary>
110     public virtual void LateExecute()
111     {
112 
113     }
114 
115     public virtual void OnCollisionEnter(Collision collision)
116     {
117 
118     }
119     public virtual void OnCollisionExit(Collision collision)
120     {
121 
122     }
123     public virtual void OnCollisionStay(Collision collision)
124     {
125 
126     }
127     public virtual void OnTriggerEnter(Collider collider)
128     {
129 
130     }
131     public virtual void OnTriggerExit(Collider collider)
132     {
133 
134     }
135     public virtual void OnTriggerStay(Collider collider)
136     {
137 
138     }
139 }
State

相关文章: