작업_자습

[Unity] CSV! 데이터! 어떻게 처리 할건데.

티백고래 2026. 10. 27. 23:09

1. 데이터를 왜 CSV로 하셨어요

: 엑셀로 데이터를 작성할 거고, 특히 아이템 데이터의 경우에는 이후에 가짓수는 많아지는데 실제로 짊어질 데이터가 변화하지는 않아서.

 

2. 대사/독백은?
: 현재 엑셀로 작성하고 있으며, 이를 json으로 할지 csv로 할지는 아직 미정. 동일한 방식으로 파싱을 할지 어쩔지 고민해야한다. (빨리 결론 내야 한다.)

현재는 csv로 만든 것을 기준으로 작성하고 있다.(아마 별 문제가 없다면 csv로 갈 것 같다. json이 여러모로 쉼표 문제 등에서 자유로운 것은 알고 있지만, 현재 구상된 구조가 계층적으로 파고파고 들어갈 정도로 복잡하지는 않다.

 

3. 그럼 현재는 구현을 어떻게 할 생각인데?

: 일단 Resources 폴더는 사용하지 않는 방향으로 잡고, 그에 맞춰서 기획을 짜보았다.


#### 데이터 파이프라인
- 원칙: Resources 폴더 사용 금지. CSV는 편집 원본으로만 쓰고 런타임에 파싱하지 않음
- 흐름: CSV(편집) → 에디터 임포터(자동 변환·검증) → ScriptableObject → Addressables 등록 → 부팅 시 비동기 로드 → Repository 인터페이스로 제공
- 아이템: `ItemDefinition`(아이템 1개 = 에셋 1개) + `ItemDatabase`(Addressable). 효과는 `스탯:값;스탯:값` 형식으로 적고 임포트 시 `StatType`과 대조해 검증
- 대사(NPC·라디오·독백): 대사 구조(ID·화자·종류·소속 그룹·순서)는 `DialogueTable` SO, 문장 본문은 Unity Localization String Table(Demo는 한국어만)
- 화자: `Speaker` enum 대신 `SpeakerDefinition` SO (이름·초상화)
- 런타임 접근: `IItemRepository`, `IDialogueRepository` 등 인터페이스에만 의존(DIP)
- 부팅: Bootstrap 단계에서 데이터 로드가 끝난 뒤 타이틀로 진입