using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Ether
{
///
/// 状态类型
///
public enum StateType
{
Loop = 0, //循环:如idle,walk,run等
Once = 1, //一次:如技能播放等,结束后自动切换会默认状态
}
///
/// 状态所处阶段
///
public enum StateStage
{
Playing = 0, //播放中
Over = 1, //结束
}
public abstract class StateBase : IDisposable
{
protected StateMachine machine;
private StateType stateType = StateType.Loop;
public virtual StateType StateType { get { return stateType; } set { stateType = value; } }
public void Init(StateMachine stateMachine)
{
this.machine = stateMachine;
OnInit();
}
public virtual void OnInit() { }
public abstract void EnterState();
public abstract void ExitState();
public virtual bool CheckStateIsCanSwitch()
{
return true;
}
public virtual void Dispose()
{
PoolManager.Inst.Push(this);
}
}
}