Today I Learned - Unity에서 Google Sheets 사용법 정리

2025. 4. 24. 20:13[Unity] Game Programing

 

1. Google Sheets를 Unity에서 사용하는 이유

Google Sheets는 외부에서 데이터를 관리하고 Unity에서 실시간으로 참조하거나 불러올 수 있는 매우 유용한 툴입니다. 주로 다음과 같은 용도로 사용됩니다:

  • 게임 밸런스 데이터 관리 (예: 경험치 테이블, 아이템 정보)
  • 실시간 업데이트 가능한 게임 파라미터 설정
  • 버전 관리 및 협업 시 유용한 외부 데이터 소스 제공

2. 기본 접근 구조

Google Sheets는 Google Sheets API 또는 CSV 공개 URL을 통해 접근할 수 있습니다. 두 방식 모두 Unity에서 HTTP 요청을 통해 데이터를 받아 JSON이나 CSV로 파싱할 수 있습니다.


3. Google Sheets API 키 발급 및 설정 방법

  1. Google Cloud Platform(GCP)에 로그인
  2. 새 프로젝트 생성 → API 및 서비스 → 라이브러리 → Google Sheets API 활성화
  3. 사용자 인증 정보 → API 키 생성 → 이 키를 Unity에서 사용

이 API 키는 Google Sheets의 데이터에 접근할 수 있는 인증 토큰이며, 시트 ID와 함께 사용됩니다.


4. 공개된 Google Sheet를 Unity에서 읽어오기 (CSV 방식)

1) 시트를 공개 상태로 설정

  1. Google Sheets에서 파일 → 공유 → 링크 복사
  2. 링크 유형을 "인터넷에 공개"로 변경

2) CSV URL 형태로 변경

공유 링크에서 시트 ID를 추출하고 아래 형식으로 구성:

https://docs.google.com/spreadsheets/d/{시트ID}/export?format=csv

3) Unity 코드 예시 (UnityWebRequest 사용)


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

public class GoogleSheetLoader : MonoBehaviour
{{
    public string sheetUrl = "https://docs.google.com/spreadsheets/d/시트ID/export?format=csv";

    void Start()
    {{
        StartCoroutine(LoadSheetData());
    }}

    IEnumerator LoadSheetData()
    {{
        UnityWebRequest www = UnityWebRequest.Get(sheetUrl);
        yield return www.SendWebRequest();

        if (www.result == UnityWebRequest.Result.Success)
        {{
            string csvData = www.downloadHandler.text;
            Debug.Log(csvData); // CSV 파싱은 직접 구현
        }}
        else
        {{
            Debug.LogError("Sheet 로딩 실패: " + www.error);
        }}
    }}
}}

5. CSV 파싱 방법

CSV 파일은 쉼표(,)를 기준으로 데이터를 구분합니다. Unity에서는 Split 함수로 라인과 열을 나누어 2차원 배열로 변환할 수 있습니다.


string[] lines = csvData.Split('\\n');
foreach (string line in lines)
{{
    string[] cells = line.Split(',');
    // 데이터 처리
}}

6. JSON 방식 사용 (Google Sheets API + API 키)

Google Sheets API를 통해 JSON 형식으로 데이터를 가져오려면 다음과 같은 요청 URL을 사용합니다:


https://sheets.googleapis.com/v4/spreadsheets/{시트ID}/values/{시트명}?key={API_KEY}

위 URL을 UnityWebRequest로 요청한 뒤, JsonUtilityNewtonsoft.Json을 사용해 JSON을 파싱합니다.


7. 실무 적용 예시

실제 프로젝트에서는 다음과 같은 방식으로 Google Sheets를 활용했습니다:

  • 스탯 테이블, 아이템 데이터, 레벨 설정을 스프레드시트로 관리
  • 시트 수정 후 Unity 내 CSV 동기화 자동화
  • 기획자와 개발자가 동시에 같은 테이블을 관리

또한, 스프레드시트 상에서 에러 값을 자동으로 확인하거나 수식으로 조건을 검증해 개발 시 실수를 줄일 수 있었습니다.


8. Google Sheets와 Unity 연동 시 유의사항

  • 외부 URL 요청 시 CORS 정책 문제 발생 가능성 → 공개 시트 추천
  • 비공개 시트 접근은 OAuth 인증 필요 (복잡도 상승)
  • CSV의 구분자(쉼표)와 줄 바꿈 처리 주의
  • 시트 수정 후 캐시 갱신 지연 → 강제 갱신하거나 타임스탬프 추가

9. 결론 및 느낀 점

Unity에서 Google Sheets를 사용하는 것은 데이터 외부화, 협업 개선, 실시간 변경 적용이라는 측면에서 매우 유용합니다. 특히 인디 개발팀이나 프로토타이핑 환경에서 빠르게 수치를 수정하고 반영해야 할 경우 강력한 도구가 될 수 있습니다.

단, 민감한 정보는 절대 시트에 담지 않으며, 인증이 필요한 경우에는 Google API 인증 절차를 잘 구성해야 합니다.