본문 바로가기
728x90

코루틴3

Unity, Coroutine과 Invoke 차이 Coroutine과 Invoke는 무슨 차이점이 있는걸까? 유니티를 사용하다보면 인보크와 코루틴의 차이점이 무엇인지에 대해 의문을 품은 적이 있으실겁니다. 이 둘은 마치 싱글 쓰레드를 사용한다는 전설을 가지고 있는 유니티에서 마치 멀티 쓰레드를 사용하는 것처럼 편하게 사용할 수 있습니다. 여담으로 유니티는 싱글 쓰레드만 사용하지 않습니다. 이러한 처리들을 위해서 여러 백그라운드 워커쓰레드가 함께 동작하고 있으며, 이는 프로파일러를 통해서 확인이 가능합니다. (최근 회사에 유니티 코리아 세미나가 있었는데, 절대 싱글 쓰레드만 사용하지 않는다고 강조를 하더군요.) 실제로 프로젝트 작업을 하다보면 이 둘에 대해 구분 없이 쓰는 분도 있으며 대게는 어떻게 관리가 이루어지는지에 대해서 모르는 시는 분들이 생각보다.. 2023. 11. 10.
Unity, 플레이 모드가 아닌 상태에서 코루틴 사용하기 "Application.isPlaying == false"일 때, 코루틴을 사용하고 싶다면? 일반적이지 않은 상황에서 코루틴을 쓰고 싶은 경우 아래와 같이 해결할 수 있습니다. UnityEditor 네임스페이스를 이용하여 코루틴처럼 만들기 반복기(IEnumerator)의 특성을 이용하여 일반 함수처럼 돌려쓰기 유니티 지원 코루틴 패키지 설치하기 1. UnityEditor 네임스페이스를 이용하여 코루틴처럼 만들기 UnityEditor.EditorApplication.update 델리게이트를 통하여 프레임마다 함수를 호출하는 방법입니다. 아래의 코드를 작성합니다. EditorCoroutine.cs #if UNITY_EDITOR public class EditorCoroutine { public static .. 2022. 4. 6.
Unity, 코루틴과 멀티쓰레드의 차이 코루틴과 멀티쓰레드 코루틴을 통하여 마치 멀티 쓰레딩을 할 수 있지만, 사실 이는 멀티 쓰레딩과는 거리가 있습니다. 코루틴(Coroutine) 매 프레임마다 스케쥴링으로 관리가 됩니다. 매 프레임에서 IEnumerator의 반복기 형태로 호출되며 체크합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class CoroutineTest : MonoBehaviour { private void Start() { StartCoroutine(DelayedHelloWorld(2f)); // 2초 뒤에 출력 StartCoroutine(DelayedHelloWorld(1f)); // 1초 뒤에 출력 Star.. 2022. 2. 12.
반응형