TIL(2024,07,23)최종 프로젝트 1차구현 하나씩 만들기

김보근·2024년 7월 23일

Unity

목록 보기
47/113
post-thumbnail

TIL (Today I Learned)

오늘의 작업 개요

오늘은 Unity 프로젝트에서 스킬 시스템을 구현하면서 RootBoostSkill 클래스를 포함한 여러 스킬 클래스의 기능을 개선하였습니다. 특히, 스킬의 부스트 배수와 관련된 UI 업데이트 및 레벨 업그레이드 기능을 수정하고, 그 과정에서 발생한 문제들을 해결하였습니다.

주요 작업 내용
1. Skill 클래스 기본 구현
기본적으로 모든 스킬이 상속받는 Skill 클래스를 구현했습니다. 이 클래스에는 스킬의 지속 시간, 쿨타임, 레벨, 업그레이드 비용 등 공통적인 속성들을 포함합니다. 또한, 스킬이 활성화되었을 때의 동작과 쿨타임 UI 업데이트 기능도 포함되어 있습니다.

  1. RootBoostSkill 클래스 구현
    RootBoostSkill 클래스는 Skill 클래스를 상속받아 특정 스킬의 기능을 구현합니다. 이 스킬은 일정 시간 동안 터치 증가량을 부스트하는 기능을 가집니다.

  2. 팝업 창 UI 구현
    스킬 버튼을 누르면 팝업 창이 나타나고, 팝업 창에는 스킬 이름, 현재 능력, 다음 레벨에서의 능력, 그리고 업그레이드 버튼이 포함됩니다.

  3. 문제 해결 (Troubleshooting)
    작업 과정에서 몇 가지 문제가 발생했습니다.

상세 설명
Skill 클래스
Skill 클래스는 모든 스킬의 기본이 되는 클래스입니다. 주요 속성 및 메서드는 다음과 같습니다.

  • skillDuration: 스킬 지속 시간.
  • cooldownTime: 스킬 쿨타임.
  • currentLevel: 현재 스킬 레벨.
  • unlockCost: 해금 비용.
  • UpdateCooldownUI(): 쿨타임 UI를 업데이트하는 메서드.
  • ActivateSkill(): 스킬을 활성화하는 메서드.
  • ApplySkillEffect(): 각 스킬이 구현해야 하는 실제 효과를 정의하는 추상 메서드.

RootBoostSkill 클래스

  • RootBoostSkill 클래스는 Skill 클래스를 상속받아 구현되었습니다.
  • boostMultiplier: 현재 부스트 배수.
  • boostDuration: 부스트 지속 시간.
  • Start(): 초기 설정을 위한 메서드.
  • ApplySkillEffect(): 부스트 효과를 적용하는 메서드.
  • GetCurrentAbilityDescription(): 현재 레벨의 능력 설명을 반환하는 메서드.
  • GetNextAbilityDescription(): 다음 레벨의 능력 설명을 반환하는 메서드.
  • UpdateClickValues(): 스킬의 레벨이 오를 때마다 호출되며, 부스트 배수를 업데이트하는 메서드.

팝업 창 UI

팝업 창은 스킬 버튼을 누를 때 나타납니다. 팝업 창에는 스킬 이름, 현재 능력, 다음 레벨의 능력, 업그레이드 버튼이 포함됩니다.
ShowSkillInfoPopup() 메서드를 통해 팝업 창을 띄우고 정보를 업데이트합니다.

문제 해결 (Troubleshooting)

문제 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 업데이트 및 레벨 업그레이드 기능을 개선하였으며, 각종 예외 상황을 처리하여 사용자 경험을 향상시켰습니다. 앞으로도 지속적으로 기능을 추가하고 개선해 나갈 것입니다.

profile
게임개발자꿈나무

0개의 댓글