//TODO:检测一些事件 然后进行状态切换 //获得对应注册哪些事件, 就检测哪些事件? //只有状态切换成功才回 CheckEvent 返回true protected bool CheckEvent() { if (CheckBaseEvent()) { return(true); } var msg = GetEvent().NextMsg(); lastMsg = msg; if (msg != null) { Log.AI("CheckEventIs " + msg.type); if (msg.type == MyAnimationEvent.MsgType.IDLE) { return(aiCharacter.ChangeState(AIStateEnum.IDLE)); } else if (msg.type == MyAnimationEvent.MsgType.DoSkill) { var isBaseAttack = GetSkill().IsDefaultSkill(msg.skillData); Log.AI("CheckCastSkill " + isBaseAttack); if (isBaseAttack) { Log.AI("CheckAttack " + msg.type); var skillPart = GetSkill(); skillPart.SetDefaultActive(); return(aiCharacter.ChangeState(AIStateEnum.COMBAT)); } else { Log.AI("Enter CastSkill"); var skillPart = GetSkill(); skillPart.SetActiveSkill(msg.skillData); //技能动作为空 if (string.IsNullOrEmpty(msg.skillData.AnimationName)) { SkillLogic.UseSkill(GetAttr()); return(false); } else { return(aiCharacter.ChangeState(AIStateEnum.CAST_SKILL)); } } } else if (msg.type == MyAnimationEvent.MsgType.STUNNED) { return(aiCharacter.ChangeState(AIStateEnum.Stunned)); } else if (msg.type == MyAnimationEvent.MsgType.EXIT_STUNNED) { return(aiCharacter.ChangeState(AIStateEnum.IDLE)); } else if (msg.type == MyAnimationEvent.MsgType.DEAD) { return(aiCharacter.ChangeState(AIStateEnum.DEAD)); } else if (msg.type == MyAnimationEvent.MsgType.JUMP) { Log.AI("EnterJumpStateNow"); return(aiCharacter.ChangeState(AIStateEnum.JUMP)); } else { return(CheckEventOverride(msg)); } } return(false); //return CheckAttackEvent (); }