팀스파르타 내일배움캠프

[TIL] Unity 게임 개발의 3가지 핵심 시스템 구축

creator2041 2025. 7. 10. 22:31

📘 오늘 배운 것

기획 데이터를 게임에 통합하는 파이프라인부터, 전문적인 카메라 워크, 기본적인 맵 이동 로직까지, 게임의 뼈대를 이루는 세 가지 핵심 시스템을 직접 구축하는 방법을 배웠다.


1️⃣ 데이터 파이프라인: CSV ➔ ScriptableObject 자동화 ⚙️

🔍 문제

기획자가 관리하는 방대한 양의 CSV 데이터를 어떻게 하면 효율적이고 안전하게 게임 내 '실물 데이터'로 만들 수 있을까?

✅ 해결책

CSV 파일을 읽어 ScriptableObject(.asset)로 자동 변환하는 파이프라인을 구축했다.

  1. 데이터 정의: Weapons.csv, Enemies.csv 등 데이터를 CSV로 명확히 정의
  2. 데이터 파싱: CSVConverter.cs로 CSV를 C# 객체로 변환
  3. 에셋 생성: [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로 자연스럽게 지역 전환을 구현할 수 있게 되었다.


🧠 결론

오늘 하루 동안 데이터 관리, 카메라 워크, 공간 이동이라는 세 가지 필수 시스템의 기반을 다졌다.
각 시스템을 독립적으로 구현하면서도, 서로 어떻게 유기적으로 연결될 수 있는지에 대한 깊은 이해를 얻을 수 있었다.
이는 앞으로 복잡한 게임 기능을 추가할 때 매우 튼튼한 뼈대가 될 것이다.