안녕하세요!! 오늘은 유니티상에서 Http 통신을 하는법에 대해 포스팅 해보도록 하겠습니다!!
유니티에서 서버로 양식을 보내는 방법은 두가지 종류가 있는데요.
IMultipartFormSection 방식
WWWForm 사용(레거시 함수) 방식
이렇게 두가지가 존재합니다!!
오늘은 그중에
WWWForm 사용(레거시 함수) 방식
에 대해 포스팅 해보도록 하겠습니다!
우선 공식 홈페이지에서 어떤 식으로 통신을 하게 되는지 확인해 보도록 하겠습니다!!
https://docs.unity3d.com/kr/2018.4/Manual/UnityWebRequest-SendingForm.html
공식 홈페이지에서의 설명은 이렇게 되어있는데요. 설명으론 알아보기힘드니 코드를 통해서 알아보도록 하겠습니다!
using UnityEngine;
using System.Collections;
public class MyBehavior : public MonoBehaviour {
void Start() {
StartCoroutine(Upload());
}
IEnumerator Upload() {
WWWForm form = new WWWForm();
form.AddField("myField", "myData");
UnityWebRequest www = UnityWebRequest.Post("http://www.my-server.com/myform", form);
yield return www.SendWebRequest();
if(www.isNetworkError || www.isHttpError) {
Debug.Log(www.error);
}
else {
Debug.Log("Form upload complete!");
}
}
}
기본적으로 HTTP 통신을 하게 되는 코드는 이렇습니다!!
윗줄부터 천천히 보면서 내려가보록 하죠.
처음 부분은 유니티의 Start() 생명주기가 시작함과 동시에 코루틴을 실행하는 코드 입니다.
여기에서 코루틴이란 실행을 일시 정지하고 유니티에서 제어권을 갖게되는 함수입니다.
하지만 이번지간은 코루틴에대한 포스팅이 아니니 간단하게 어디에 쓰이는지 요약하자면 대기시간이 필요한 작업이나. 비동기 작업 등에서 사용했을때 좋은 효율을 보여주는 함수입니다.
다시 코드로 넘어가서.
이부분이 코루틴의 실행 부분입니다!!
WWWForm 오브젝트를 생성해서 form 에 생성된 원시데이터를 연결하고
from.AddField(); 함수를 통해 데이터 값을 넣어줬습니다.
데이터를 넣어 준 후 UnityWebRequest에 연결된 오브젝트에 따라 UnityWebRequest.POST 를 호출하여 HTTP 통신을 진행 하게됩니다.
통신 후 리턴 받은 데이터를 통해 HTTP 통신이 정상적으로 진행 됐는지에 대한 코드입니다.
NetworkError 가 있다면 에러메세지를 띄우고
통신이 정상적으로 잘 됐다면! "Form upload complete!" 라는 메세지가 LOG 창에 뜨게 될 것입니다!
네 여기까지 유니티에서 HTTP 통신코드를 어떻게 만들어서 사용 할 지에 대해 알아봤는데요.
서버에통신을 할때 자주 사용되는 코드이기 때문에 함수화하여서 잘만들어 놓는다면 계속 가져다 쓰기 좋은 코드가 될것입니다!
이 포스팅은 스틱코드의 아래 글을 참고하여 만들어 졌습니다!
https://stickode.com/detail.html?no=2505
'C#' 카테고리의 다른 글
[C#][Unity] 유닛 이동에 맞춰 카메라 따라가게 만들기 (0) | 2021.12.24 |
---|---|
[C#][Unity] 마우스 클릭으로 유닛 이동시키기 (0) | 2021.12.12 |
[C#][Unity]시점을 이동하는 카메라! (0) | 2021.09.27 |
[C#][Unity]체력바 만들기! (0) | 2021.09.17 |
[C#][Unity] 캐릭터 점프 기능 만들기 (0) | 2021.09.14 |