
오늘은 Unity 프로젝트에서 스킬 시스템을 구현하면서 RootBoostSkill 클래스를 포함한 여러 스킬 클래스의 기능을 개선하였습니다. 특히, 스킬의 부스트 배수와 관련된 UI 업데이트 및 레벨 업그레이드 기능을 수정하고, 그 과정에서 발생한 문제들을 해결하였습니다.
주요 작업 내용
1. Skill 클래스 기본 구현
기본적으로 모든 스킬이 상속받는 Skill 클래스를 구현했습니다. 이 클래스에는 스킬의 지속 시간, 쿨타임, 레벨, 업그레이드 비용 등 공통적인 속성들을 포함합니다. 또한, 스킬이 활성화되었을 때의 동작과 쿨타임 UI 업데이트 기능도 포함되어 있습니다.
RootBoostSkill 클래스 구현
RootBoostSkill 클래스는 Skill 클래스를 상속받아 특정 스킬의 기능을 구현합니다. 이 스킬은 일정 시간 동안 터치 증가량을 부스트하는 기능을 가집니다.
팝업 창 UI 구현
스킬 버튼을 누르면 팝업 창이 나타나고, 팝업 창에는 스킬 이름, 현재 능력, 다음 레벨에서의 능력, 그리고 업그레이드 버튼이 포함됩니다.
문제 해결 (Troubleshooting)
작업 과정에서 몇 가지 문제가 발생했습니다.
상세 설명
Skill 클래스
Skill 클래스는 모든 스킬의 기본이 되는 클래스입니다. 주요 속성 및 메서드는 다음과 같습니다.
RootBoostSkill 클래스
팝업 창 UI
팝업 창은 스킬 버튼을 누를 때 나타납니다. 팝업 창에는 스킬 이름, 현재 능력, 다음 레벨의 능력, 업그레이드 버튼이 포함됩니다.
ShowSkillInfoPopup() 메서드를 통해 팝업 창을 띄우고 정보를 업데이트합니다.
문제 1: 0레벨일 때 다음 레벨의 부스트 배수가 잘못 표시되는 문제
원인: GetNextAbilityDescription() 메서드에서 currentLevel이 0일 때도 잘못된 계산을 하고 있었습니다.
해결: currentLevel이 0인 경우 기본 부스트 배수를 반환하고, 그렇지 않을 경우 다음 레벨의 부스트 배수를 정확히 계산하도록 수정했습니다.
protected override string GetNextAbilityDescription()
{
BigInteger nextBoostMultiplier = currentLevel == 0
? baseBoostMultiplier
: baseBoostMultiplier + (currentLevel + 1) * 100;
return $"다음 레벨 부스트 배수: {nextBoostMultiplier}, 부스트 지속 시간: {boostDuration / 60}분";
}
문제 2: 스킬을 업그레이드한 후 부스트 배수가 잘못 표시되는 문제
원인: UpdateClickValues() 메서드에서 currentLevel이 0일 때 부스트 배수를 잘못 계산하고 있었습니다.
해결: currentLevel이 0인 경우 부스트 배수를 baseBoostMultiplier로 설정하고, 그렇지 않을 경우 정확히 계산하도록 수정했습니다.
protected override void UpdateClickValues()
{
boostMultiplier = currentLevel == 0
? baseBoostMultiplier
: baseBoostMultiplier + currentLevel * 100;
}
오늘의 작업을 통해 스킬 시스템의 핵심 기능을 구현하고, 여러 문제들을 해결하여 기능이 정상적으로 동작하도록 하였습니다. 특히, 스킬의 부스트 배수와 관련된 UI 업데이트 및 레벨 업그레이드 기능을 개선하였으며, 각종 예외 상황을 처리하여 사용자 경험을 향상시켰습니다. 앞으로도 지속적으로 기능을 추가하고 개선해 나갈 것입니다.