WaitUntil, WaitWhile 차이 Difference between WaitUntil and WaitWhile
WaitWhile과 WaitUntil은 Unity에서 코루틴을 사용하여 특정 조건에 따라 실행을 지연시키는 명령입니다. 이 두 명령은 매우 유사하지만, 조건을 평가하는 방식에서 차이가 있습니다.
WaitUntil
사용 방법: yield return new WaitUntil(predicate);
동작 원리: predicate 람다 표현식이 true를 반환할 때까지 코루틴의 실행을 일시 중지합니다.
사용 예시: 어떤 변수가 특정 값을 가질 때까지 기다릴 때 사용합니다.
예: yield return new WaitUntil(() => myVariable == true);
적용 사례: 조건이 true가 될 때까지 기다림 (예: 로딩이 완료되거나, 플레이어가 특정 지점에 도달할 때까지 기다림).
WaitWhile
사용 방법: yield return new WaitWhile(predicate);
동작 원리: predicate 람다 표현식이 false를 반환할 때까지 코루틴의 실행을 일시 중지합니다.
사용 예시: 어떤 조건이 더 이상 참이 아닐 때까지 기다릴 때 사용합니다.
예: yield return new WaitWhile(() => myVariable == true);
적용 사례: 조건이 false가 될 때까지 기다림 (예: 특정 상태가 더 이상 유효하지 않을 때까지 기다림).
결론
WaitUntil은 조건이 true가 되기를 기다립니다.
WaitWhile은 조건이 false가 되기를 기다립니다.
두 명령 모두 매 프레임마다 조건을 평가하며, 해당 조건이 충족되면 코루틴의 실행을 계속합니다. 사용하는 시나리오와 조건에 따라 적절한 명령을 선택하여 사용하면 됩니다.
※ 람다식 내부에 == 대신 != 을 사용하는 것과의 차이
기술적으로 WaitUntil에 != 조건을 사용하여 WaitWhile과 동일한 기능을 구현할 수 있습니다. 예를 들어, WaitWhile(() => myCondition)은 WaitUntil(() => !myCondition)과 동일한 결과를 가져옵니다. 그럼에도 불구하고 WaitUntil과 WaitWhile이 별도로 존재하는 이유는 명확성과 가독성에 있습니다.
명확성: WaitUntil과 WaitWhile은 이름에서부터 해당 명령이 어떤 조건을 기다릴지 명확하게 표현합니다. WaitUntil은 조건이 참이 될 때까지, WaitWhile은 조건이 거짓이 될 때까지 기다리는 것으로 쉽게 이해할 수 있습니다.
가독성: 코드를 읽는 사람에게 WaitUntil(() => !myCondition) 보다는 WaitWhile(() => myCondition)이 더 직관적이고 이해하기 쉽습니다. 부정 연산자(!)를 사용하는 것보다는 명확한 명령어를 사용하는 것이 코드의 가독성을 높여 줍니다.
코딩 표준 및 스타일: 프로그래밍에서는 종종 동일한 기능을 수행하는 다양한 방법이 존재합니다. 그러나 특정 방법이 다른 방법보다 더 명확하거나 일반적으로 선호될 수 있습니다. WaitUntil과 WaitWhile의 분리는 이러한 코딩 표준과 스타일을 반영한 것입니다.
따라서, 이 두 명령의 분리는 기능적 필요성보다는 코드를 작성하고 읽는 사람들에게 더 명확하고 직관적인 표현을 제공하기 위함입니다. 개발자는 조건의 의미에 따라 더 적합한 명령을 선택할 수 있습니다.