private void ChangeAttackTarget(object[] args) { if (args != null && args.Length > 0) { if (GoalbalID != Convert.ToInt32(args[0])) { return; } var go = (GameObject)args[1]; var value = conditionMap.SetDictionaryValue(CondtionTag.Target, go != null); if (value) { updateData.AddSortListElements(CondtionTag.Near_Target, (context) => { var dis = Vector3.Distance(context.GameObject.transform.position, go.transform.position); var near = context.Parameter.ParameterList.GetSortListValue(ParameterTag.Attack_Dis); if (dis < near.Value) { return(true); } return(false); }); } else { updateData.RemoveSortListElements(CondtionTag.Near_Target); } OnEmitEvent(GOAPEventType.ChangeCondition, new object[] { GoalbalID, }); #if UNITY_EDITOR panelInfo.ForEach((panel) => { if (panel.ElementTag == CondtionTag.Target) { panel.IsRight = value; } }); #endif } }