728x90
반응형
Unity 툴 설정
1. Hierarchy에 빈 게임 오브젝트를 만들고 이름을 MainController로 합니다.
2. C#파일을 MainController로 생성하고 게임오브젝트 MainController의 콤포넌트에
추가합니다.
3. UI > Text 오브젝트를 작성하고 MainController스크립의 속성인 Text Result에 연결합니다.
4. UI > Button 오브젝트를 생성하고 On Click 이벤트를 버튼에 추가합니다.
5. 추가한 On Click 이벤트에 MainController 오브젝트를 연결하고 Function 에 MainController
OnClick 메소드를 지정합니다.
Unity에서 HTTP 사용하는 방법
-----MainController.cs----
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class MainController : MonoBehaviour
{
//접속할 URL
private const string URL = "http://naver.com/api/search?zipcode=7830060";
//게임오브젝트UI > ButtonのInspector > On Click()에서 호출하는 메소드
public void OnClick()
{
//코루틴 호출
StartCoroutine("OnSend", URL);
}
//코루틴
IEnumerator OnSend(string url)
{
//URL을 GET으로 호출함
UnityWebRequest webRequest = UnityWebRequest.Get(url);
//URL에 접속하여 결과값을 불러올때까지 대기
yield return webRequest.SendWebRequest();
//에러가 발생했는지 체크
if (webRequest.isNetworkError)
{
//호출 실패
Debug.Log(webRequest.error);
}
else
{
//호출 성공
Debug.Log(webRequest.downloadHandler.text);
}
}
}
Unity 에서 JSON DATA를 불러와서 Serializable 클래스에 넣는 방법
-------------MainController.cs-----------
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class MainController : MonoBehaviour
{
//접속할 URL
private const string URL = "http://naver.com/api/search";
//JSON테이터를 표시할 UI > Text오브젝트
public Text textResult;
//게임오브젝트 UI > ButtonのInspector > On Click()에서 호출되는 메소드
public void OnClick()
{
//코루틴 호출
StartCoroutine("OnSend", URL);
}
//코루틴
IEnumerator OnSend(string url)
{
//POST할 정보
WWWForm form = new WWWForm();
form.AddField("zipcode", 1000001);
//URL을POST방식으로 호출
UnityWebRequest webRequest = UnityWebRequest.Post(url, form);
//UnityWebRequest에 버퍼설정
webRequest.downloadHandler = new DownloadHandlerBuffer();
//URL로 접속해서 결과를 가져올때까지 대기
yield return webRequest.SendWebRequest();
//에러발생 체크
if (webRequest.isNetworkError)
{
//호출실패
Debug.Log(webRequest.error);
}
else
{
//호출성공
//Zip클래스에 JSON데이터를 넣는다
Zip zip = JsonUtility.FromJson<Zip>(webRequest.downloadHandler.text);
//zip에 담은 JSON데이터를 게임오브젝트UI > Text 출력한다
textResult.text = zip.message + "," + zip.results.Length + "," + zip.status;
foreach (ZipResult zr in zip.results)
{
textResult.text += string.Format("\n{0},{1},{2},{3}", zr.address1, zr.address2, zr.address3, zr.prefcode);
}
}
}
}
불러온 JSON 데이터
JSON데이터.txt
{
"message": null,
"results": [
{
"address1": "서울",
"address2": "강남구",
"address3": "강남대로",
"prefcode": "13",
"zipcode": "1000001"
}
],
"status": 200
}
JSON 데이터를 담을 Serializable 클래스
Zip.cs
[System.Serializable]
public class Zip
{
public string message;
public ZipResult[] results;
public int status;
}
ZipResult.cs
[System.Serializable]
public class ZipResult
{
public string address1;
public string address2;
public string address3;
public string kana1;
public string kana2;
public string kana3;
public string prefcode;
public string zipcode;
}
728x90
반응형
'Unity3D' 카테고리의 다른 글
[Unity3D] Awake 와 Start의 차이점 (0) | 2020.11.19 |
---|---|
Unity 3D Gameobject.Find 에서 검색되는 기준 (0) | 2020.11.17 |
[Unity3D] UnityWebRequest를 사용하여 이미지를 다운로드하고 저장하기 (0) | 2020.11.08 |
Unity에서 Asset Store 에 로그인 되지 않을 때 (0) | 2020.11.08 |
[Unity]FindOfjectsOfType<T> 와 GetComponents<T> 중 어떤게 더 빠를까? (0) | 2020.11.02 |
댓글