Post

Unity http 통신

다른 캡스톤 팀원이 웹 서버를 만들어 두어서, 그 서버 메소드를 사용하기 위해 get을 사용하는 과정을 기록했음

Unity Version : 2022.3.16f1 LTS

사용자가 입력한 값 받기

우선 사용자가 회원가입할 때 입력한 ID, Email, PW를 스크립트에서 받아야 함

1
2
3
4
5
6
7
8
9
// RegisterPopup.cs
public void OnClickRegister()
{
    id = idField.text;
    email = emailField.text;
    pw = pwField.text;
    Debug.Log("Register Clicked");
    Debug.Log("ID : " + id + " Email : " + email + " PW : " + pw);
}

Get으로 ID 있는지 확인

Get을 위한 코루틴 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// RegisterPopup.cs
IEnumerator RequestGet(string url, Action<string> callback)
{
    UnityWebRequest request = UnityWebRequest.Get(url);
    // response가 올 때까지 턴 넘김
    yield return request.SendWebRequest();
    if (request.result != UnityWebRequest.Result.Success)
    {
        Debug.Log(request.error);
    }
    else
    {
        // response의 내용을 callback에 넣음
        string result = request.downloadHandler.text;
        Debug.Log("Request Text : " + result);
        callback(result);
    }
}

버튼을 클릭했을 때, Get으로 사용 가능한 아이디인지 확인할 수 있도록 함

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// RegisterPopup.cs
public void OnClickRegister()
{
    msgTxt.gameObject.SetActive(false);

    id = idField.text;
    email = emailField.text;
    pw = pwField.text;

    Debug.Log("Register Clicked");
    Debug.Log("ID : " + id + " Email : " + email + " PW : " + pw);

    // ID 중복 검사를 위한 코루틴 생성 및 실행
    StartCoroutine(RequestGet(url + duplicateIDUrl + id, (callback) =>
    {
        Debug.Log("RequestGet Callback : " + callback);
        if (callback == "true")
        {
            msgTxt.gameObject.SetActive(true);
            msgTxt.color = Color.green;
            msgTxt.text = "This ID is UNIQUE! GOOD!";
        }
        else
        {
            msgTxt.gameObject.SetActive(true);
            msgTxt.color = Color.red;
            msgTxt.text = "Register Failed. Check your ID";
        }
    }));
}

결과

이미 있는 아이디 작성했을 때

이미 있는 아이디 작성했을 때

Untitled

없는 아이디 작성했을 때

없는 아이디 작성했을 때

Untitled

참고자료

유니티 HTTP 통신 구현 핵심 정리1

[Unity] HTTP REST api 통신 모듈 구현

유니티 웹서버 통신

[Unity] UnityWebRequest 의 Get, Post 사용하기

[Unity3D] 웹 데이터 파일 다운로드,업로드(GET, POST) 및 저장 (UnityWebRequest)

How to get Text from TextMeshPro input field

[Unity] UnityWebRequest로 json 데이터를 Http body에 Post로 전달방법

유니티[Unity3D] TMP_InputFIeld()타입 초기화

Unity - [SerializeField],직렬화, [System.Serializable]

Unity - using문(using directive , using statement)

This post is licensed under CC BY 4.0 by the author.