问点AI的问题 但跟FSM无关
战棋所以每次都是Idle的时候执行RunAI()
不过我看之前的专案跟这次的专案流程有一点不同
第一种 :
void Idle.RunAI()
{
ai = unit.AI;
ai.Think();
}
void BattleController.ChangeAI(BattleUnit unit, State state, object params)
{
switch (state)
{
State.Fear:
var ai = new FearAI();
ai.SetParams(params);
unit.AI = ai;
return;
}
}
第二种 :
void Idle.RunAI()
{
switch (unit.state)
{
State.Fear:
if (fearAI == null) fearAI = new FearAI();
ai = fearAI;
ai.SetParams(unit.stateParams);
break;
default:
ai = normalAI;
break;
}
ai.SetEntity(unitEntity);
ai.Think();
}
void BattleController.ChangeAI(BattleUnit unit, State state, object params)
{
unit.state = state;
unit.stateParams = params;
}
第一种每个角色身上都有AI,在角色改变状态的时候直接把unit.AI置换掉
第二种就Idle里面塞了一堆AI,轮到角色的时候再把角色的参数丢到AI里面
两种做法好像...差不多??
第二种是不是好管理一点啊