public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime) { if (curSectionTime < m_StartTime) { return(true); } GameObject obj = sender as GameObject; if (obj == null) { return(false); } UnityEngine.Vector3 center = obj.transform.TransformPoint(m_Center); GameObject target; if (m_Relation == CharacterRelation.RELATION_FITSIGNSONS && !m_NeedCollider) { List <GameObject> area_objects = TriggerUtil.FindTargetInProgeny(center, m_Radius, obj, m_SignForSkill, m_Degree); List <GameObject> filted_objects = FiltStateObjects(area_objects); target = TriggerUtil.GetObjectByPriority(obj, filted_objects, m_DistancePriority, m_DegreePriority, m_Radius, m_Degree); } else { List <GameObject> area_objects = TriggerUtil.FindTargetInSector(center, m_Radius, obj.transform.forward, obj.transform.position, m_Degree); List <GameObject> filted_objects = FiltStateObjects(TriggerUtil.FiltByRelation(obj, area_objects, m_Relation, m_SignForSkill)); target = TriggerUtil.GetObjectByPriority(obj, filted_objects, m_DistancePriority, m_DegreePriority, m_Radius, m_Degree); } if (target != null) { MoveTargetInfo targetinfo = new MoveTargetInfo(); targetinfo.Target = target; targetinfo.ToTargetDistanceRatio = m_ToTargetDistanceRatio; targetinfo.ToTargetConstDistance = m_ToTargetConstDistance; targetinfo.IsAdjustMove = m_IsAdjustMove; instance.CustomDatas.AddData <MoveTargetInfo>(targetinfo); } return(false); }