팀스파르타 내일배움캠프

[TIL] 데이터의 확장성과 시스템의 안정성, 두 마리 토끼를 잡다

creator2041 2025. 7. 22. 23:30

💡 오늘의 작업 요약: 데이터 확장성과 시스템 안정성, 두 마리 토끼를 잡다


✅ 작업한 내용

📁 1. CSV 데이터 구조 정비 & PrefabAddress 도입

  • Skills: 총 80종의 스킬을 3단계(Tier) 트리 구조로 정리
  • Materials: 기존 로컬라이제이션 키를 실제 텍스트로 대체 (디버깅/테스트 시 가독성 향상)
  • Armor / Weapons: 동료 전용 장비 추가, 전체 데이터 구조를 통일
  • PrefabAddress 컬럼 공통 추가: 추후 Addressable Asset System 도입을 대비하여 모든 아이템 데이터에 PrefabAddress 컬럼을 삽입

🔧 2. Teleporter 리팩터링 (4단계에 걸친 개선)

  • 1단계: Tag → LayerMask, bool → Coroutine으로 교체 (기초 개선)
  • 2단계: 코루틴 중단 문제를 인지하고 OnTriggerExit() 기반 상태 전이 구조로 변경
  • 3단계: TeleporterManager 도입으로 텔레포터 상태 중앙 관리
  • 4단계: PlayManager가 모든 텔레포터 상태를 제어할 수 있도록 API (ToggleAllTeleporters, ResetAllStates) 설계

🤔 문제 상황 & 해결

문제 1. Addressable 시스템 도입 전 CSV 구조 미정

해결: PrefabAddress 컬럼을 미리 넣어두고 Null 값 처리. 향후 시스템 확장 시 빠르게 연동 가능하도록 준비 완료

문제 2. Teleporter가 비활성화될 경우 코루틴 중단

해결: 코루틴에 의존하지 않고, OnTriggerEnter / OnTriggerExit 기반 상태 전이로 리팩터링

문제 3. 텔레포터마다 상태를 따로 관리하면서 생기는 동기화 이슈

해결: TeleporterManager에서 모든 텔레포터를 일괄 등록 및 상태 일괄 제어 구조로 재설계

문제 4. 다른 시스템에서 텔레포터를 직접 통제할 수 없음

해결: PlayManager가 직접 제어 가능한 API를 제공하여 상위 시스템과의 연동성 확보


📌 오늘 배운 점 / 인사이트

  • 데이터 설계는 지금만 보는 것이 아니라 '나중'을 준비하는 행위다.
  • 시스템은 코드를 잘 짜는 것 이상으로, Unity의 생명주기와 상태 변화를 이해하는 것이 중요하다.
  • 매니저 패턴은 단순한 구조가 아니라, 모듈 간 책임을 분리하고 유지보수를 쉽게 하는 핵심 도구다.
  • 상위 시스템이 하위 시스템을 제어할 수 있도록 구조를 설계해야, 유연하고 안정적인 아키텍처를 만들 수 있다.

📁 기타 메모

  • PrefabAddress 값은 추후 Addressable 시스템에서 자동 매핑하는 방식으로 구현 예정
  • TeleporterManager는 Singleton이 아닌 Scene 내 수동 할당 구조로 설정 (의존성 최소화)