팀스파르타 내일배움캠프

[TIL]유니티에서 CSV와 구글 스프레드시트를 이용한 데이터 관리 첫걸음 (2025.07.01)

creator2041 2025. 7. 2. 23:06

TIL: 유니티에서 CSV와 구글 스프레드시트를 이용한 데이터 관리 첫걸음 (2025.07.01)

오늘은 게임에 필요한 아이템 데이터를 외부 파일로 관리하는 방법을 배우고, 첫 번째 데이터 파일인 Weapons.csv를 직접 생성했다. 이 과정에서 데이터 기반 개발의 핵심 원칙실용적인 팁들을 익혔다.


1. 데이터 구조화: 왜 파일을 분리해야 하는가?

처음에는 모든 아이템(무기, 재료 등)을 하나의 파일로 관리할까 생각했지만, 역할별로 파일을 분리하는 것이 더 확장성에 유리하다는 것을 배웠다.

  • Weapons.csv: 무기 데이터만 관리
  • Materials.csv: 재료 데이터만 관리

이렇게 파일을 나누면, 특정 종류의 아이템만 수정하거나 대량 추가할 때 작업이 명확하고 실수를 줄일 수 있다.


2. 코드와 데이터의 '약속': CSV 열(Column) 순서의 중요성

CSV 파일의 데이터는 C# 스크립트에서 정의한 순서대로 읽어들인다. 따라서 스프레드시트의 열 순서와 클래스 필드 순서를 정확히 맞추는 것이 중요하다.

현재 프로젝트의 ItemData.cs 클래스는 다음 순서를 따른다:

  • A열: name (아이템 이름)
  • B열: grade (아이템 등급)
  • C열: count (아이템 수량/스택)
  • D열: description (아이템 설명)

count 필드의 의미:

  • 장비 아이템(무기 등): 스택 불가1 입력 (개별 아이템)
  • 소모품/재료: 최대 스택 수량 의미 (예: 포션은 99, 철광석은 999)

3. 유니티 연동을 위한 실전 팁과 주의사항

  • 저장 위치: Resources.Load()는 오직 Assets/Resources/ 폴더에서만 작동한다. → Assets/Resources/CSV/와 같은 경로에 CSV 파일을 저장해야 한다.
  • 헤더 제거: 현재 CSV 파서를 따로 구성하지 않아, 첫 줄(제목 행)은 반드시 삭제해야 함. 안 그러면 오류 발생.
  • 행 번호는 데이터가 아니다: 구글 시트에서 보이는 1, 2, 3...은 실제 파일 내용이 아님. 메모장에서 확인되는 내용만이 진짜 CSV 데이터다.

오늘의 결론

단순히 게임 내 오브젝트를 만드는 단계를 넘어, 외부 파일을 활용한 데이터 중심 개발의 첫 발을 내디뎠다. 처음에는 복잡하게 느껴졌지만, 구조를 이해하고 나니 수백 개의 아이템도 체계적으로 관리할 수 있다는 자신감이 생겼다.

다음 목표는 Materials.csv를 작성하고, 이 데이터를 기반으로 실제 게임 내 아이템을 생성하고 활용하는 시스템을 구축하는 것이다.