게임 엔진/Unity

[Unity]코루틴으로 값을 리턴 받고 싶을 때

데브준우 2023. 7. 21. 02:57

간혹 개발하다보면 코루틴을 사용하지만 어떠한 결과를 리턴 받고 싶을 때가 있다.

그럴때는 매개변수에 Action을 넣고 람다식을 사용해주면 된다.

 

    IEnumerator Start()
    {
        yield return ReturnCoroutine((flag) =>
        {
            Debug.Log("리턴값 :" + flag);
        });
    }

    IEnumerator ReturnCoroutine(Action<bool> callback)
    {
        //구현
        bool flag = false;

        callback?.Invoke(flag);

        yield return null;

    }

 

예를들어 bool값을 리턴받고 싶다면, 위처럼 매개변수에 Action<bool> 을 집어넣고, 

호출하는쪽에 람다식을 사용해서 리턴값을 받으면된다.

 

위처럼 코루틴안에서 코루틴을 사용하거나, 아니면 일반 함수의 마지막 코드로 사용하고 콜백으로 값을 리턴받아서 무언가를 실행할 때 좋을 것 같다.