본문 바로가기
유니티

Day 53 - 구글 시트와 Unity 연동하기(구글 시트 API 사용 준비)

by shin0707 2024. 12. 11.
728x90

 

  • 주제

>>  왜 구글 시트를 활용하는가?

>>  Unity에서 구글 시트 API 사용 준비

>>  Unity에서 HTTP 요청 설정하기


  • 공부내용

Unity에서 구글 시트와 연동하여 데이터를 읽고 쓰는 작업은 게임 데이터를 동적으로 관리하고 실시간으로 업데이트하는 데 유용하다. 이번 글에서는 Unity와 구글 시트를 연동하기 위한 기초 개념과 준비 작업을 알아본다.

 

1. 왜 구글 시트를 활용하는가?

구글 시트는 다음과 같은 장점 때문에 Unity 프로젝트에서 유용하다:

  • 클라우드 기반 관리: 어디서나 데이터 수정 가능.
  • 실시간 업데이트: 별도의 코드 배포 없이 데이터 업데이트.
  • 협업 용이: 팀원이 동일한 데이터를 쉽게 편집 가능

 

2. Unity에서 구글 시트 API 사용 준비

Unity와 구글 시트를 연동하려면 Google Apps Script를 활용하여 API를 설정해야 한다.

 

2-1. 구글 시트 생성

  • 새 구글 시트를 열고 데이터를 저장할 테이블 형식을 만든다.
  • 예: Name과 Score 열을 포함.

 

2-2. Google Apps Script 설정

  • 구글 시트의 도구 > 스크립트 편집기를 클릭.
  • 아래 코드를 입력하여 API를 설정한다.
function doGet(e) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');
  const action = e.parameter.action;

  if (action === 'load') {
    const rows = sheet.getDataRange().getValues();
    const json = rows.map(row => ({ name: row[0], score: row[1] }));
    return ContentService.createTextOutput(JSON.stringify({ data: json }))
      .setMimeType(ContentService.MimeType.JSON);
  }

  if (action === 'overwrite') {
    const names = e.parameter.names.split(',');
    const scores = e.parameter.scores.split(',');
    sheet.clearContents();
    for (let i = 0; i < names.length; i++) {
      sheet.appendRow([names[i], scores[i]]);
    }
    return ContentService.createTextOutput('success');
  }
}

 

 

2-3. 스크립트 배포

  • 배포 > 웹 앱으로 배포를 선택.
  • 애플리케이션 액세스를 모든 사용자로 설정하고 URL을 복사.

 

3. Unity에서 HTTP 요청 설정하기

Unity에서 데이터를 요청하기 위해 UnityWebRequest를 사용한다.

아래는 HTTP 요청을 위한 기초 코드를 작성한 예제다:

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

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

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

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

        yield return request.SendWebRequest();

        if (request.result == UnityWebRequest.Result.Success)
        {
            Debug.Log($"Data Loaded: {request.downloadHandler.text}");
        }
        else
        {
            Debug.LogError($"Failed to load data: {request.error}");
        }
    }
}

이제 Unity에서 데이터를 불러오는 준비가 완료되었다.

다음 글에서는 Unity에서 구글 시트 데이터를 실제로 불러오고 처리하는 방법에 대해 알아본다.

728x90
반응형