📘 오늘 배운 것
기획 데이터를 게임에 통합하는 파이프라인부터, 전문적인 카메라 워크, 기본적인 맵 이동 로직까지, 게임의 뼈대를 이루는 세 가지 핵심 시스템을 직접 구축하는 방법을 배웠다.
1️⃣ 데이터 파이프라인: CSV ➔ ScriptableObject 자동화 ⚙️
🔍 문제
기획자가 관리하는 방대한 양의 CSV 데이터를 어떻게 하면 효율적이고 안전하게 게임 내 '실물 데이터'로 만들 수 있을까?
✅ 해결책
CSV 파일을 읽어 ScriptableObject(.asset)로 자동 변환하는 파이프라인을 구축했다.
- 데이터 정의:
Weapons.csv,Enemies.csv등 데이터를 CSV로 명확히 정의 - 데이터 파싱:
CSVConverter.cs로 CSV를 C# 객체로 변환 - 에셋 생성:
[MenuItem]을 활용해 ScriptableObject 파일(.asset)로 자동 생성
이제 기획자는 CSV만 수정하면 되고, 프로그래머는 Unity 메뉴 클릭 한 번으로 데이터를 에셋으로 갱신할 수 있다.
2️⃣ 동적 카메라 시스템: 시네머신 (Cinemachine) 🎥
🔍 문제
코드로 직접 카메라를 제어하는 것은 복잡하고, 부드러운 움직임을 구현하기 어렵다.
✅ 해결책
Unity의 강력한 카메라 시스템인 Cinemachine을 활용했다.
- 가상 카메라: 메인 카메라 대신 여러 개의 Virtual Camera를 제작
- Vcam_Normal: 평상시 플레이어 추적용
- Vcam_Combat: 전투 시 넓은 시야 확보용
- Vcam_Cutscene: 연출용 고정 시점 카메라
- 우선순위 시스템:
Priority를 조정해 상황에 따라 자동 전환
전투가 시작되면 Vcam_Combat의 우선순위를 올리는 것만으로 부드럽게 카메라 전환이 이루어진다.
3️⃣ 공간 이동 로직: 트리거 (Trigger) 🚪
🔍 문제
플레이어가 특정 지역에 도달했을 때, 어떻게 다른 지역으로 자연스럽게 이동시킬 수 있을까?
✅ 해결책
Collider의 Trigger 기능을 사용한 텔레포트 시스템을 구현했다.
- Teleporter.cs: 출발지와 도착지 오브젝트에 이 스크립트를 부착
- OnTriggerEnter2D: 플레이어가 트리거 영역에 진입 시 도착지로 이동
- 무한 루프 방지: bool 플래그로 재진입 방지 처리
보이지 않는 BoxCollider2D로 자연스럽게 지역 전환을 구현할 수 있게 되었다.
🧠 결론
오늘 하루 동안 데이터 관리, 카메라 워크, 공간 이동이라는 세 가지 필수 시스템의 기반을 다졌다.
각 시스템을 독립적으로 구현하면서도, 서로 어떻게 유기적으로 연결될 수 있는지에 대한 깊은 이해를 얻을 수 있었다.
이는 앞으로 복잡한 게임 기능을 추가할 때 매우 튼튼한 뼈대가 될 것이다.
'팀스파르타 내일배움캠프' 카테고리의 다른 글
| [TIL] 경험을 위한 기술, 기술을 위한 경험: 나의 개발 북극성을 찾아서 (3) | 2025.07.23 |
|---|---|
| [TIL] 데이터의 확장성과 시스템의 안정성, 두 마리 토끼를 잡다 (1) | 2025.07.22 |
| [TIL]유니티 CSV 통합 파서 및 로컬라이제이션 구조 리팩토링 (0) | 2025.07.07 |
| [TIL]유니티 커스텀 로컬라이제이션 시스템 구축 및 디버깅 (0) | 2025.07.04 |
| [TIL]유니티에서 CSV와 구글 스프레드시트를 이용한 데이터 관리 첫걸음 (2025.07.01) (2) | 2025.07.02 |