유니티 코루틴에서 Generic 사용하기.

안또니오·2022년 9월 28일
0

유니티

목록 보기
3/6

RESTful API 통신을 하다보면 자연스레 Json을 사용하게 되고,
유니티에서 제공하는 JsonUtility를 사용하게 된다.

그때 class를 이용해서 Json으로 변환하거나, Json에서 가져오게 된다.
또한 RESTful API통신을 하다보면 서버에서 Response를 넘겨줘야 다음단계를 넘어가도록 코드를 짜게 되어있어 코루틴을 이용하게 된다.

근데 그렇게 통신을 하려고 보니
각자 다른 Json class와 콜백함수 등을 이용하게 되니
IEnumerator 가 너무 많아지고 중복되는 요소들이 보였다.

이를 하나로 통합할 수 있는 방법을 찾다가 < T >를 이용할 수 있다는 것을 알게 되었다.

예를 들어

IEnumerator  PostAPI<T>(string uri, object body, GetDataDelg callback){
        WWWForm form = new WWWForm();
        form.AddField("fieldName", "fieldData");
        UnityWebRequest www = UnityWebRequest.Post(uri, form);
        yield return www.SendWebRequest();

        T t = JsonUtility.FromJson<T>(www.downloadHandler.text);
        callback(t);
    }

IEnumerator GetAPI<T>(string uri, GetDataDelg callback){
         UnityWebRequest www = UnityWebRequest.Get(uri);
        yield return www.SendWebRequest();

        T t = JsonUtility.FromJson<T>(www.downloadHandler.text);
        callback(t);
    }

이런식으로 사용한다고 하면, 각기 클래스, 콜백마다 새로 만들어줄 필요없이 통일된 코루틴으로 이용할 수 있다.

단점은... 파라미터가 너무 길어진다는 것....

profile
2020. 11월 공부시작.

0개의 댓글