using UnityEngine;
/// <summary>
/// 功能说明:状态模式 吃睡干例子
/// </summary>
public class DPState:MonoBehaviour
{
private void Start()
{
Context context = new();
context.SetState(new Sleep(context));
context.Handle();
}
}
public interface IState
{
void Handle();
}
public class Context//状态机
{
private IState mState;//当前状态
public void SetState(IState state) //设置状态
{
mState = state;
}
public void Handle()
{
mState.Handle(); //当前状态下需要执行的方法
}
}
public class EatMeals : IState
{
private Context mContext;
public EatMeals(Context context)
{
mContext = context;
}
public void Handle()
{
Debug.Log("我们正在吃饭");
}
}
public class Work : IState
{
private Context mContext;
public Work(Context context)
{
mContext = context;
}
public void Handle()
{
Debug.Log("我们正在工作");
}
}
public class Sleep : IState
{
private Context mContext;
public Sleep(Context context)
{
mContext = context;
}
public void Handle()
{
Debug.Log("我们正在睡觉");
}
}