Unity 매뉴얼 - UnityWebRequest 사용법
이 문서에서는 Unity의 UnityWebRequest
API를 이용하여 HTTP 서버에서 데이터(텍스트 또는 바이너리)를 가져오는 방법에 대해 설명합니다. 또한, 이와 관련된 예제와 활용 방법도 제시합니다.
1. UnityWebRequest 소개
UnityWebRequest
는 Unity에서 HTTP 요청을 처리하기 위한 클래스입니다. 이 API는 웹 서버와 통신하며 데이터를 전송하거나 수신할 수 있습니다. 특히, HTTP GET 요청을 통해 서버에서 데이터를 가져오는 데 유용합니다.
2. 기본 사용법
HTTP 또는 HTTPS 웹 서버에서 텍스트나 바이너리 데이터를 가져오려면 UnityWebRequest.Get
메서드를 사용합니다. 이 메서드는 URL을 인수로 받아 해당 URL에서 데이터를 요청합니다.
예제 코드
다음은 UnityWebRequest
를 사용하여 서버에서 텍스트 데이터를 가져오는 간단한 예제입니다.
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class MyBehaviour : MonoBehaviour {
void Start() {
StartCoroutine(GetText());
}
IEnumerator GetText() {
UnityWebRequest www = UnityWebRequest.Get("https://www.my-server.com");
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success) {
Debug.Log(www.error);
}
else {
// 결과를 텍스트로 출력
Debug.Log(www.downloadHandler.text);
// 바이너리 데이터로 결과를 가져오기
byte[] results = www.downloadHandler.data;
}
}
}
3. 주의 사항
UNet
은 지원이 중단된 솔루션입니다. 새로운 멀티플레이어 및 네트워킹 솔루션은 게임 오브젝트용 넷코드에서 확인할 수 있습니다.- 기본적으로 이 함수는
DownloadHandlerBuffer
를 사용하여 수신된 데이터를 버퍼링합니다. 필요에 따라 다른 핸들러를 설정할 수 있습니다.
함수 | 설명 |
---|---|
UnityWebRequest.Get |
HTTP GET 요청을 생성하여 데이터를 가져옴 |
SendWebRequest |
요청을 서버에 보내고 응답을 기다림 |
downloadHandler.text |
서버에서 받은 데이터를 텍스트로 반환 |
downloadHandler.data |
서버에서 받은 데이터를 바이트 배열로 반환 |
4. 활용 및 응용 예제
4.1. 이미지 데이터 가져오기
HTTP 서버에서 이미지를 가져오는 방법입니다. 이 경우 Texture2D
로 직접 변환하여 2D 오브젝트에 적용할 수 있습니다.
IEnumerator GetTexture() {
UnityWebRequest www = UnityWebRequestTexture.GetTexture("https://www.my-server.com/image.png");
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success) {
Debug.Log(www.error);
}
else {
Texture2D texture = DownloadHandlerTexture.GetContent(www);
// 텍스처를 2D 오브젝트에 적용하기
GetComponent<Renderer>().material.mainTexture = texture;
}
}
4.2. JSON 데이터 가져오기
서버로부터 JSON 형식의 데이터를 가져오는 방법입니다. 이는 일반적으로 REST API와 함께 사용되며, JSON 데이터를 파싱하여 사용할 수 있습니다.
IEnumerator GetJsonData() {
UnityWebRequest www = UnityWebRequest.Get("https://www.my-server.com/data.json");
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success) {
Debug.Log(www.error);
}
else {
string json = www.downloadHandler.text;
// JSON 데이터 처리 예
Debug.Log(json); // JSON 출력
}
}
결론
이 문서에서는 UnityWebRequest
를 사용하여 HTTP 서버에서 데이터를 가져오는 방법에 대해 알아보았습니다. 여러 데이터 형식에 대한 요청 예제를 통해 실질적인 활용 방법을 제시하였습니다. Unity에서 다양한 서버와의 통신을 구축하는 데 유용하게 활용할 수 있습니다.