[25.07.1] TIL( 팀프로젝트 - 열기 관련 기믹 생성 )

설민우·2025년 7월 1일

내일배움캠프 - Unity

목록 보기
68/85

📘 Stack형 스킬 쿨타임 및 업그레이드 동기화 문제 해결 정리

✅ 문제 요약

스택형(충전형) 스킬에서 발생한 문제

  1. 스킬이 쿨타임 중일 때 무기 레벨이 상승하면
    → UI에서는 최대 스택으로 잘못 표시

  2. 쿨타임이 끝나면
    → 실제 내부 스택 값은 레벨업 전 기준으로 회복
    → 스킬 사용 시 UI와 실제 상태가 불일치


🔧 원인 분석

  • StackRechargeRoutine()은 코루틴으로 스택을 주기적으로 회복
  • 무기 레벨이 오르면 MaxStack이 증가하지만,
    기존에 돌고 있는 코루틴은 그 사실을 모르고 회복을 계속 진행
  • 이로 인해 UI는 MaxStack 기준으로 갱신되지만
    실제 내부 스택은 MaxStack보다 작은 상태가 유지됨

🛠️ 해결 방법

무기 레벨업 시 다음을 수행:

  1. 스택형 스킬이면 즉시 MaxStack으로 스택을 초기화
  2. 기존에 돌고 있던 스택 회복 코루틴 중단
  3. UI도 함께 업데이트

✅ 추가 조치

  • Weapon.cs 내 SetUpgradeLevel()에서
    StackableWeaponSkill.ResetStacksOnUpgrade() 호출

  • ResetStacksOnUpgrade() 내부에서 다음 로직 수행:

    • _currentStacks = MaxStack
    • 기존 스택 회복 코루틴이 돌고 있으면 StopCoroutine() 처리
    • UI 동기화 (UpdateStackUI 호출)

📌 참고 사항

  • Stackable 스킬이 레벨업 시 쿨타임 도중에 있더라도
    즉시 MaxStack 기준으로 동기화되어 정확한 표시 및 동작 보장
  • 스택 UI와 실제 사용 가능한 스택 수가 항상 일치하도록 유지됨
profile
클라이언트 개발자를 지망하고 있습니다.

0개의 댓글