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 키 발급 및 설정 방법
- Google Cloud Platform(GCP)에 로그인
- 새 프로젝트 생성 → API 및 서비스 → 라이브러리 → Google Sheets API 활성화
- 사용자 인증 정보 → API 키 생성 → 이 키를 Unity에서 사용
이 API 키는 Google Sheets의 데이터에 접근할 수 있는 인증 토큰이며, 시트 ID와 함께 사용됩니다.
4. 공개된 Google Sheet를 Unity에서 읽어오기 (CSV 방식)
1) 시트를 공개 상태로 설정
- Google Sheets에서 파일 → 공유 → 링크 복사
- 링크 유형을 "인터넷에 공개"로 변경
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로 요청한 뒤, JsonUtility나 Newtonsoft.Json을 사용해 JSON을 파싱합니다.
7. 실무 적용 예시
실제 프로젝트에서는 다음과 같은 방식으로 Google Sheets를 활용했습니다:
- 스탯 테이블, 아이템 데이터, 레벨 설정을 스프레드시트로 관리
- 시트 수정 후 Unity 내 CSV 동기화 자동화
- 기획자와 개발자가 동시에 같은 테이블을 관리
또한, 스프레드시트 상에서 에러 값을 자동으로 확인하거나 수식으로 조건을 검증해 개발 시 실수를 줄일 수 있었습니다.
8. Google Sheets와 Unity 연동 시 유의사항
- 외부 URL 요청 시 CORS 정책 문제 발생 가능성 → 공개 시트 추천
- 비공개 시트 접근은 OAuth 인증 필요 (복잡도 상승)
- CSV의 구분자(쉼표)와 줄 바꿈 처리 주의
- 시트 수정 후 캐시 갱신 지연 → 강제 갱신하거나 타임스탬프 추가
9. 결론 및 느낀 점
Unity에서 Google Sheets를 사용하는 것은 데이터 외부화, 협업 개선, 실시간 변경 적용이라는 측면에서 매우 유용합니다. 특히 인디 개발팀이나 프로토타이핑 환경에서 빠르게 수치를 수정하고 반영해야 할 경우 강력한 도구가 될 수 있습니다.
단, 민감한 정보는 절대 시트에 담지 않으며, 인증이 필요한 경우에는 Google API 인증 절차를 잘 구성해야 합니다.
'[Unity] Game Programing' 카테고리의 다른 글
| TIL : 유니티 게임 시스템 구현 (1) | 2025.04.29 |
|---|---|
| TIL: AlivePlayer 시스템 심층 분석 (상태 머신, 데이터 관리, 컴포넌트 구조) (1) | 2025.04.28 |
| 캐릭터 개발 TIL (Today I Learned) (0) | 2025.04.25 |
| UniTask (0) | 2025.04.21 |
| UniRx: 유니티에서의 반응형 프로그래밍 (1) | 2025.04.08 |