Inflearn Community Q&A
딜레이를 주고 싶을 때 코루틴을 사용하는 이유
Written on
·
102
0
강의에서 코루틴의 개념은 계산이 오래 걸리는 작업을 다른 루프에서 도와주는 거라고 했는데 그저 머즐 플래쉬를 발생시킬 때 딜레이를 주려는 것뿐인데 코루틴을 사용하는 이유가 뭔가요? 계산이 복잡해 보이지 않는데요.
yield return new WaitForSeconds(0.2f);"yield return [조건]"
조건을 만족할 때까지 메인 루프에 양보한댔는데 위 코드가 어떻게 나온 건지 이해가 안 됩니다.
코루틴을 정확히 언제 쓰는 것인지 개념을 확실하게 알고 싶습니다.
Quiz
Scriptable Object를 사용하는 주된 이유는 무엇일까요?
게임 오브젝트의 움직임을 제어하기 위해서입니다.
여러 오브젝트가 데이터를 공유하여 메모리를 절약합니다.
물리 연산을 처리하기 위해서입니다.
사용자 인터페이스를 만들기 위해서입니다.
Answer 2
0
안녕하세요. SouthCreate 님,
총구화염 효과에 코루틴을 사용하지 않고 잠시 홀드시킨다면 다른 로직들을 처리할 수 가 없습니다.
일시정지한 것처럼 끊어지겠지요. 그래서 멀티쓰레드는 아니지만 쓰레드와 비슷한 처리를 할 수 있는 코루틴을 활용해서 메인 로직(예, Update,...)을 홀드시키지 않고도 지연시킬수 있도록 하기 위해서 코루틴을 활용합니다.
쉽게 말씀드리자면 Unity의 메인 로직(게임 루프) 는 끊임없이 돌아가야 하기 때문에
‘딜레이를 주면서도 나머지 게임은 계속 돌아가게’ 해야 함
yield return new WaitForSeconds(0.2f);
→ 0.2초 동안 이 함수(코루틴)는 멈추지만, 게임은 멈추지 않음!
정리를 하자면 코루틴은 다음과 같은 용도로 사용합니다.
시간지연이 필요한 경우 (예, 10초 뒤에 실행)
순차적으로 실행해야 하는 로직 (예, 애니메이션 -> 사운드 -> 다음 동작)
비동기적으로 처리 (예, 서버 통신)
궁금한 점, 헷갈리는 부분이 있으시다면 다시 질문해주세요.
0
안녕하세요, 인프런 AI 인턴입니다. SouthCreate님.
코루틴에 관한 질문을 주셨네요. 코루틴은 유니티에서 게임 로직을 작성할 때 특정 작업을 잠시 멈추고 나중에 다시 이어서 실행할 수 있도록 해주는 기능입니다. 이를 통해 복잡한 로직을 단순화하고, 게임의 다른 부분에 영향을 주지 않고 비동기 작업을 수행할 수 있습니다.
코루틴을 사용하는 이유
비동기 작업 처리: 코루틴은 비동기 작업을 효율적으로 처리할 수 있도록 도와줍니다. 즉, 특정 작업이 완료될 때까지 기다릴 필요 없이, 게임의 다른 부분이 정상 작동하도록 만들 수 있습니다.
간단한 딜레이 구현: Unity의
yield return new WaitForSeconds구문을 사용하면 특정 시간만큼 대기한 후 작업을 재개할 수 있습니다. 이는 타이머나 업데이트 루프를 통해 계산적으로 구현하지 않고도 간단히 딜레이 효과를 줄 수 있는 장점이 있습니다.전문적인 로직 처리: 예를 들어 페이드 인/아웃, 애니메이션 시퀀스, 네트워킹 요청 대기 등이 있는데, 이러한 경우에 코루틴을 사용하면 비동기 대기가 가능해 더 자유롭게 로직을 구성할 수 있습니다.
코루틴 사용 예시
코루틴은 기본적으로 어떠한 조건이 충족될 때까지 실행을 멈추고, 그 외 다른 작업들이 원활하게 진행되도록 합니다. 예를 들어, 머즐 플래쉬를 발사한 후 0.2초 동안 대기하려면, 코루틴을 사용하여 일정 시간이 지난 후 다시 작업을 재개하도록 할 수 있습니다:
IEnumerator FlashRoutine()
{
// 머즐 플래쉬 시작
muzzleFlash.SetActive(true);
// 0.2초 대기
yield return new WaitForSeconds(0.2f);
// 머즐 플래쉬 중지
muzzleFlash.SetActive(false);
}
위 코드에서 보듯이, WaitForSeconds(0.2f)는 0.2초 동안 코드의 실행을 멈추게 하여 딜레이 효과를 간단하게 구현하도록 돕습니다.
유용한 자료
코루틴에 대해 더 많은 정보를 얻고 싶으시다면, 공식 Unity 문서를 참고하는 것도 좋은 방법입니다: Unity - Manual: 코루틴
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





