본문 바로가기
유니티

Day 54 - Unity로 구글 시트 데이터 불러오기

by shin0707 2024. 12. 12.
728x90

 

  • 주제

>>  구글 시트 데이터 구조 이해하기

>>  Unity에서 JSON 데이터 파싱

>>  데이터 불러오기 구현

>>  데이터 활용 예제(Unity UI 업데이트)

>>  테스트하기


  • 공부내용

이전 글에서는 Unity와 구글 시트를 연동하기 위한 기초 설정을 알아봤다. 이번 글에서는 Unity에서 구글 시트의 데이터를 불러오는 과정을 상세히 다룬다. 데이터를 성공적으로 불러온 뒤, 이를 활용하는 방법까지 배워보자.

 

1. 구글 시트 데이터 구조 이해하기

구글 시트 데이터를 Unity에서 처리하려면 데이터를 JSON 형식으로 변환해야 한다.

아래는 JSON 응답의 예다:

json

{
  "data": [
    { "name": "Alice", "score": "1200" },
    { "name": "Bob", "score": "850" },
    { "name": "Charlie", "score": "950" }
  ]
}

이 데이터는 Unity에서 클래스 형태로 파싱해야 한다.

 


 

2. Unity에서 JSON 데이터 파싱

Unity에서 JSON 데이터를 처리하기 위해 JsonUtility를 사용할 수 있다.

아래는 JSON 구조를 반영한 클래스 정의 예제다:

[System.Serializable]
public class GoogleData
{
    public string name;
    public string score;
}

[System.Serializable]
public class GoogleDataList
{
    public GoogleData[] data;
}

 


 

3. 데이터 불러오기 구현

Unity에서 데이터를 불러오는 스크립트를 작성한다.

아래는 코루틴을 사용해 데이터를 요청하고 파싱하는 코드다:

using System.Collections;
using UnityEngine;
using UnityEngine.Networking;

public class GoogleSheetManager : MonoBehaviour
{
    private string sheetUrl = "https://script.google.com/macros/s/your-deployed-url/exec";

    public void LoadSheetData()
    {
        StartCoroutine(LoadDataCoroutine());
    }

    private IEnumerator LoadDataCoroutine()
    {
        string requestUrl = $"{sheetUrl}?action=load";
        UnityWebRequest request = UnityWebRequest.Get(requestUrl);

        yield return request.SendWebRequest();

        if (request.result == UnityWebRequest.Result.Success)
        {
            Debug.Log($"Response: {request.downloadHandler.text}");

            // JSON 파싱
            GoogleDataList dataList = JsonUtility.FromJson<GoogleDataList>(request.downloadHandler.text);
            DisplayData(dataList);
        }
        else
        {
            Debug.LogError($"Failed to load data: {request.error}");
        }
    }

    private void DisplayData(GoogleDataList dataList)
    {
        foreach (var entry in dataList.data)
        {
            Debug.Log($"Name: {entry.name}, Score: {entry.score}");
        }
    }
}

 

4. 데이터 활용 예제(Unity UI 업데이트)

구글 시트에서 불러온 데이터를 Unity UI에 표시하려면 TextMeshPro와 같은 텍스트 컴포넌트를 사용할 수 있다.

아래는 데이터를 텍스트로 업데이트하는 코드다:

using TMPro;
using UnityEngine;

public class UIManager : MonoBehaviour
{
    public TextMeshProUGUI[] nameTexts;
    public TextMeshProUGUI[] scoreTexts;

    public void UpdateUI(GoogleDataList dataList)
    {
        for (int i = 0; i < dataList.data.Length; i++)
        {
            if (i >= nameTexts.Length || i >= scoreTexts.Length) break;

            nameTexts[i].text = dataList.data[i].name;
            scoreTexts[i].text = dataList.data[i].score;
        }
    }
}

 


 

5. 테스트하기

 

  • Unity 씬에 GoogleSheetManager와 UIManager를 추가.
  • LoadSheetData()를 호출하여 데이터를 불러온다.
  • 데이터를 UI에 업데이트하여 구글 시트 내용을 확인한다.

이번 글에서는 Unity로 구글 시트 데이터를 불러와 UI에 표시하는 방법을 알아봤다.

다음 글에서는 Unity에서 데이터를 수정하고, 이를 다시 구글 시트로 업데이트하는 방법을 다룰 예정이다.

 

728x90
반응형