/// <summary> /// 添加延迟AI对象,返回唯一ID号。 /// </summary> /// <typeparam name="TResult"></typeparam> /// <param name="entity"></param> /// <param name="callback"></param> /// <param name="iterator"></param> /// <returns></returns> public int AddDelayAi <TResult>(TileEntity entity, Action <DelayAiObject <TResult> > callback, IEnumerator <TResult> iterator) { int uniqueId = ++_aiUniqueId; var ai = new DelayAiObject <TResult>(uniqueId, entity, callback, iterator); _aiList.Add(ai); _aiHash.Add(uniqueId, ai); return(uniqueId); }
/// <summary> /// 延迟计算回调函数 /// </summary> /// <param name="delayAI"></param> private void OnDelayLockTargetersCompleted(DelayAiObject <IsoGridTarget> delayAI) { m_tempTargetPos = null; m_tempMoveRoute = null; //Entity.State = EntityStateType.Thinking; IsoGridTarget targetInfos = delayAI.result; Assert.Should(targetInfos != null && targetInfos.MoveRoute != null); if (targetInfos.MoveRoute.Count > 1) { m_tempMoveRoute = targetInfos.MoveRoute; } m_tempTargeters = AuxConvertToList(targetInfos.Targeter); // 执行行动 DoAction(); }