Unity에서 표준국어대사전 API를 이용하는 방법에 알아보겠습니다.
먼저 표준국어대사전 API사이트에서 회원가입을 한 후, 오픈 API 사용 신청을 해야 합니다.
회원가입 후, 오픈 API 사용 예시를 통해 어떤 식으로 데이터가 나오는지 볼 수 있습니다.
사전 데이터는 API 종류, 요청 변수, 검색방식, 검색어 등의 분류에 따라 다르게 나옵니다.
위 값에 따라 변수를 다르게 설정하므로 사전에 어떤 데이터를 이용할 것인지를 정해야 합니다.
저는 여기서 사전 내용, json, 타겟코드, 그리고 검색어(타겟코드 번호)은 랜덤으로 넣어 처리하겠습니다.
API로 데이터를 받아오는 스크립트는 다음과 같습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class UsingAPI : MonoBehaviour{
int randN;
string jsonResult, currentWord;
string apiKey = "사이트에서 발급받은 키값", methodType = "&type_search=view&req_type=json&method=TARGET_CODE&q=";
string[] strs;
private void Start()
{
StartCoroutine(LoadData());
}
IEnumerator LoadData()
{
randN = Random.Range(1, 550000);
//데이터를 불러올 API url 선언
string GetDataUrl = "https://stdict.korean.go.kr/api/view.do?certkey_no=4017&key=" + apiKey + methodType + randN.ToString();
using (UnityWebRequest www = UnityWebRequest.Get(GetDataUrl))
{
//request 전송
yield return www.SendWebRequest();
//실패하면
if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError)
{
//에러내용 출력 및 다시 시도
Debug.Log(www.error);
StartCoroutine(LoadData());
}
//성공하면
else
{
//작업이 끝나면
if (www.isDone)
{
//데이터 타입 변환 (UTF8 byte[] -> string)
jsonResult = System.Text.Encoding.UTF8.GetString(www.downloadHandler.data);
}
}
}
}
}
apiKey에 발급받은 키 값을 넣어주고 methodType에는 사전 내용, json, 타겟 코드를 의미하는 "&type_search=view&req_type=json&method=TARGET_CODE&q="을 넣어줍니다.
이후 LoadData 부분에서 랜덤 타겟 코드를 넣은 후 사이트로부터 데이터를 가져옵니다.
데이터를 성공적으로 가져오면 이를 수정하기 쉽게 string타입으로 변환합니다.
아래는 실제 데이터 예시입니다.
여기까지가 Unity에서 표준국어대사전 API를 호출하여 데이터를 가져오는 방법입니다.
사전 검색 API나 xml데이터로 받고 싶으시면 methodType 부분을 수정하여 사용하면 됩니다.
ex) 사전 검색, xml, 나무 -> "&type_search=search&req_type=xml&q=나무"
다른 종류는 오픈 API 예시를 사용해가면서 알아보실 수 있습니다.
'게임개발 > Unity' 카테고리의 다른 글
[Unity] Button OnClick Event triggered twice (0) | 2024.08.26 |
---|---|
[Unity] 마우스 커서 숨기기, 마우스 화면 고정(cursor visible, cursor lock) (1) | 2023.12.17 |
Unity User SSA CL Certificate Error (0) | 2022.08.15 |