-
[TIL] 16주차 3일 기술 면접 대비개발일지/스파르타 코딩클럽 부트캠프 2024. 8. 1. 09:59
💡 질문에 답해보고 직접 확인해보는 시간을 가집시다.
- InvokeRepeating을 통해 반복 실행 중인 메서드는 오브젝트를 비활성화하면 멈출까요?
- Coroutine을 통해 반복 실행 중인 메서드는 오브젝트를 비활성화하면 멈출까요?
- 다음 Coroutine 코드의 성능 상 문제는 무엇이 있을까요? (Hint : 메모리)
IEnumerator Fade() { Color c = renderer.material.color; for (float alpha = 1f; alpha >= 0; alpha -= 0.1f) { c.a = alpha; renderer.material.color = c; yield return new WaitForSeconds(.1f); } }
4. Unity의 Coroutine은 비동기 동작일까요? 비동기 동작이라면 하나의 스레드에서 동작하지 않는걸까요?
1번 답 :
InvokeRepeating은 오브젝트가 비활성화되면 함께 멈춘다. 다시 활성화 된다고 해도 재개되진 않는다.
2번 답 :
코루틴도 마찬가지로 오브젝트가 비활성화되면 멈추게되며, 다시 활성화 시에 재개되지 않기 때문에 다시 활성화 해줄 때 다시 코루틴을 시작시켜줄 필요가 있다.
3번 답 :
딜레이를 만들어주는 yield return에서 코루틴이 실행될 때마다 new WaitForSeconds를 통해 생성을 해주고 있으므로 메모리에 부하가 올 수 있다. 따라서 WaitForSeconds를 변수로 만들어서 사용해주면 좋다.
4번 답 :
유니티의 코루틴은 비동기 동작이다. 비동기 동작이며 기본적으로 멀티 스레드가 아닌 단일 스레드에서 동작한다. 코루틴은 비동기 동작이지만 마치 동기처럼 동시에 동작하는 것 처럼 보인다. 실제로는 메인 스레드의 연속적인 흐름을 중단시키지 않고 각 프레임에서 조금씩 작업을 나누어서 처리한다. 여기서 중요한 점은 코루틴이 메인 스레드에서만 실행된다는 점이다. 이는 코루틴이 실행되는 동안 다른 유니티 엔진의 작업들과 함께 하나의 스레드에서 처리된다는 뜻이다.
설명 문제
💡 질문을 직접 설명해보고, 모르는 부분이 있다면 알아보는 시간을 가집시다.
- 코루틴의 동작원리와 사용해본 예시를 함께 설명해주세요.
- Invoke와 코루틴의 차이에 대해 설명해주세요.
- 코루틴과 멀티쓰레딩은 어떤 차이가 있는지 설명해주세요.
1번 답 :
위 4번 답에 포함,
사용 예시 : UI 애니메이션, 시간 차 데미지, 데미지 인디케이터 등
2번 답 :
인보크와 코루틴은 기본적으로 특정 기능에 딜레이를 주거나 일정 간격으로 반복 호출을 하는데 사용된다.
인보크와 코루틴의 차이점으로는
유연성 : 코루틴은 지연 및 재개 시점을 유연하게 설정할 수 있지만, 인보크는 고정된 시간, 간격에만 실행할 수 있다.
제어 : 코루틴은 yield를 통해 반복 중지 및 재개를 제어할 수 있고, StopCoroutine을 통해서 명시적으로 중지할 수 있다. 하지만 인보크는 설정된 시간으로 자동 실행되며 중간에 제어가 어렵다.
인보크는 단순히 일정 시간 후에 작업을 수행하거나 반복 작업을 수행할 때 유용하며, 코루틴은 게임 루프 내에서 비동기적 작업을 처리하거나, 특정 조건에서 일시적으로 작업을 중지해야 할 때 적합하다.
3번 답 :
코루틴과 멀티쓰레딩은 둘 다 비동기 작업을 처리하는 방식이다.
일단 코루틴은 싱글 스레드이며 유니티의 메인스레드에서만 작동한다. 이는 코드를 중단하고 특정 조건이나 시간이 지난 후에 다시 재개할 수 있는 기능을 제공하며, 특정 시점에서 중지하고 다음 프레임에서 다시 시작할 수 있다.
멀티 스레딩은 여러개의 스레드를 사용하여 병렬로 작업을 처리하는 방식이다. 각 스레드는 독립적으로 실행된다.
'개발일지 > 스파르타 코딩클럽 부트캠프' 카테고리의 다른 글
[TIL] 16일차 5일 유니티 데미지 텍스트 만들기 ( 제네릭 오프젝트 풀, DOTween ) (0) 2024.08.02 [TIL] 16일차 2일 기술면접 대비 ( 유니티 생명주기 ) (0) 2024.08.01 [TIL] 16일차 1일 기술 면접 대비 (0) 2024.07.30 [TIL] 15주차 5일 오류개선 (0) 2024.07.26 [TIL] 15주차 4일 트러블슈팅 FSM을 사용하며 일어난 문제들 (0) 2024.07.26