using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace DesignPattern
{
/// <summary>
/// 角色AI【状态拥有者】
/// 拥有当前的状态,并且可以切换当前的状态
/// </summary>
public abstract class ICharacterAI
{
/// <summary>
/// 角色当前AI状态
/// </summary>
protected IAIState IAIState = null;
/// <summary>
/// AI状态切换
/// </summary>
/// <param name="newAIState"></param>
public virtual void ChangeAIState(IAIState newAIState)
{
IAIState = newAIState;
IAIState.SetCharacterAI(this);
}
}
/// <summary>
/// AI状态类基类 【状态】
/// </summary>
public abstract class IAIState
{
protected ICharacterAI CharacterAI = null;
/// <summary>
/// 设置CharacterAI对象
/// </summary>
/// <param name="characterAI"></param>
public void SetCharacterAI(ICharacterAI characterAI)
{
CharacterAI = characterAI;
}
/// <summary>
/// 状态更新以及状态切换检查
/// </summary>
public abstract void Update();
}
/// <summary>
///状态A
/// </summary>
public class StateA : IAIState
{
public override void Update()
{
}
}
/// <summary>
/// 状态B
/// </summary>
public class StateB : IAIState
{
public override void Update()
{
}
}
}
游戏设计模式-状态模式
最新推荐文章于 2025-01-19 16:49:06 发布