// 이 함수는 Coroutine 함수입니다. /// <summary> /// 행동 결정 단계 중 대상을 결정하는 동안 실행되는 Coroutine입니다. 적절한 대상을 정할 때까지 대기하고, 대상 결정이 끝나면 행동 결정을 완료합니다. /// </summary> /// <param name="behavior"></param> /// <returns></returns> IEnumerator SelectTarget(Behavior behavior) { while (true) { // 결정 버튼이 눌릴 때까지 대기 yield return(new WaitUntil(() => isDecideClicked)); isDecideClicked = false; // 적절한 대상을 선택하면 if (BehaviorManager.VerificateTarget(behavior)) { // 행동 결정을 확정하고 완료한다. bm.AddBehavior(behavior); //if (playerNum == 1) Debug.Log("Player" + playerNum + " has decided."); hasDecided = true; isTargetDecide = false; break; } else { if (playerNum == 1) { Debug.Log("Invalid target. Please select targets again. (" + behavior.GetBehavior().Name + ")"); } } // TODO 통찰의 경우 두 번 선택하도록 만들기 // TODO 선택 취소 기능 만들기 } }