[TIL]유니티 CSV 통합 파서 및 로컬라이제이션 구조 리팩토링
📌 오늘 한 일
- 흩어진 CSV 파서들을
CSVConverter.cs하나로 통합 - 무기, 동료, 소재, 캐릭터 등 데이터를 하나의 구조에서 처리
DataManager,LanguageManager도입하여 접근 방식 단순화- 로컬라이제이션 시스템을 완전히 별도 모듈로 분리
🔧 개발 내용
🔹 1. CSV 파서 통합
기존에는 무기, 동료, 캐릭터, 소재 등 각각에 대해 별도의 Converter.cs 파일이 존재했음.
→ 이를 CSVConverter.cs 하나로 통합하고, IGetCSVData 인터페이스를 기반으로 모든 데이터 모델이 공통 규약을 따르도록 리팩토링.
public class WeaponData : IGetCSVData
{
public string ID { get; set; }
public string Type;
public string Rank;
public int Atk;
public int Spd;
public string NameKey;
public string DescKey;
public string EffectKey;
}
🔹 2. 데이터 매니저 싱글턴화 (DataManager.cs)
- 게임 시작 시 모든 CSV 파일을 Resources 폴더에서 읽어 파싱
- 각 데이터를
Dictionary<string, T>로 저장 DataManager.Instance.WeaponDB["WEAPON_001"]형태로 손쉽게 접근 가능
💡 DontDestroyOnLoad() 처리로 씬 이동에도 유지됨
🔹 3. 로컬라이제이션 시스템 분리 (LanguageManager.cs)
UILocalization.csv를 전용 매니저에서 관리- 키 기반 텍스트 반환:
LanguageManager.Instance.GetText("KEY_NAME") - 언어 변경 함수까지 내장 →
ChangeLanguage("en-US")
🐛 삽질 & 오류
❌ 에러 메시지
'WeaponData.Type'과(와) 'WeaponData.Type' 사이에 모호성이 있습니다.
'CompanionData.NameKey'과(와) 'CompanionData.NameKey' 사이에 모호성이 있습니다.
⚠️ 원인
동일한 클래스명(WeaponData, CompanionData)이 여러 파일에 중복 선언되어 있었기 때문
→ 기존 WeaponConverter.cs, CompanionConverter.cs 등이 남아 있었음
✅ 해결법
- 이전의 모든 개별 컨버터/데이터 스크립트 삭제
CSVConverter.cs에만 데이터 정의가 있도록 정리- 이후 정상 작동 확인
📚 배운 점
- "클래스는 프로젝트 내 한 번만 정의되어야 한다!"
- 모듈을 기능별로 명확히 분리하고 일관된 방식으로 통합하면 유지보수성과 확장성이 모두 좋아진다
- 언어 시스템은 로직과 완전히 분리해 둬야 UI, 다국어 대응 시 편하다
🧠 내일 할 일
- 각 Companion/Weapon 등에 필요한 Skill/Effect 시스템 연동 시작
- TextMeshPro에서 자동으로 키값에 맞는 텍스트를 불러오는
UITextLocalizer구현 예정
'팀스파르타 내일배움캠프' 카테고리의 다른 글
| [TIL] 데이터의 확장성과 시스템의 안정성, 두 마리 토끼를 잡다 (1) | 2025.07.22 |
|---|---|
| [TIL] Unity 게임 개발의 3가지 핵심 시스템 구축 (0) | 2025.07.10 |
| [TIL]유니티 커스텀 로컬라이제이션 시스템 구축 및 디버깅 (0) | 2025.07.04 |
| [TIL]유니티에서 CSV와 구글 스프레드시트를 이용한 데이터 관리 첫걸음 (2025.07.01) (2) | 2025.07.02 |
| [TIL] 유니티 2D 타일맵 시스템 설계 및 첫 레벨 제작 (1) | 2025.07.01 |