Unity WebRequest 사용 가이드
개요
UnityWebRequest는 HTTP 요청을 생성하고 리스폰스를 처리하는 모듈식 시스템입니다. 이 시스템의 주 목표는 Unity 게임이 웹 브라우저와 원활하게 상호작용할 수 있도록 하는 것입니다. 또한 대량의 HTTP 요청, POST/PUT 스트리밍 작업, HTTP 헤더 및 동사에 대한 세밀한 제어 등의 기능을 제공합니다.
구조
UnityWebRequest 시스템은 두 개의 레이어로 구성되어 있습니다: - 고급 레벨 API (HLAPI): 일반적인 작업을 쉽게 수행할 수 있는 편리한 인터페이스를 제공합니다. - 낮은 레벨 API (LLAPI): 고급 사용자에게 더 높은 유연성을 제공합니다.
지원 플랫폼
UnityWebRequest 시스템은 다음과 같은 플랫폼을 지원합니다: - 모든 버전의 Unity 에디터 및 스탠드얼론 플레이어 - WebGL - 모바일 플랫폼: iOS, Android - 유니버설 Windows 플랫폼
작업 단계
UnityWebRequest 생태계에서 HTTP 트랜잭션은 세 가지 단계로 나뉩니다: 1. 서버에 데이터 제공 2. 서버에서 데이터 수신 3. HTTP 플로우 컨트롤 (리디렉트 및 오류 처리 등)
이 작업은 다음의 오브젝트를 통해 관리됩니다: - UploadHandler: 서버로의 데이터 전송을 담당 - DownloadHandler: 서버에서의 데이터 수신 및 처리 - UnityWebRequest: 위의 두 오브젝트를 관리하고, HTTP 플로우 컨트롤을 담당합니다. 이 오브젝트에서는 커스텀 헤더와 URL을 정의하고, 오류 및 리디렉트 정보를 저장합니다.
일반 코드 흐름
모든 HTTP 트랜잭션의 기본 코드 흐름은 다음과 같습니다: 1. 웹 요청 오브젝트 생성 2. 웹 요청 오브젝트 설정 3. 커스텀 헤더 설정 4. HTTP 동사 설정 (GET, POST 등) 5. URL 설정 (선택 사항) 6. 업로드 핸들러 생성 및 웹 요청에 연결 7. 업로드할 데이터 제공 8. 다운로드 핸들러 생성 및 웹 요청에 연결 9. 웹 요청 보내기 - 코루틴 내에서 사용할 경우, Send()
호출 후 요청 완료 대기 10. 다운로드 핸들러에서 수신한 데이터 읽기 (선택 사항) 11. UnityWebRequest 오브젝트에서 오류 정보, HTTP 상태 코드 및 리스폰스 헤더 읽기
예제 코드
아래는 UnityWebRequest를 사용하여 POST 요청을 보내는 기본적인 C# 코드 예제입니다.
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class WebRequestExample : MonoBehaviour
{
private string url = "https://example.com/api";
private string jsonData = "{\"key\":\"value\"}";
void Start()
{
StartCoroutine(SendPostRequest());
}
IEnumerator SendPostRequest()
{
using (UnityWebRequest webRequest = UnityWebRequest.Post(url, jsonData))
{
webRequest.SetRequestHeader("Content-Type", "application/json");
yield return webRequest.SendWebRequest();
if (webRequest.result != UnityWebRequest.Result.Success)
{
Debug.LogError("Error: " + webRequest.error);
}
else
{
Debug.Log("Response: " + webRequest.downloadHandler.text);
}
}
}
}
추가 정보
UnityWebRequest는 다양한 상황에서 유용하게 사용될 수 있습니다. 예를 들어: - 서버와의 데이터 교환 - 게임 설정이나 상태 전송 - 사용자 인증 과정
이러한 기능을 활용하여 사용자 경험을 개선하고, 게임의 안정성을 높이는 데 기여할 수 있습니다.