TIL

25.03.27 TIL

gaon99 2025. 3. 28. 20:55

1. 오늘 학습 키워드

 

Player 제작


2. 오늘 학습 한 내용을 나만의 언어로 정리하기

 

2D 클리커 게임을 심화 프로젝트로 제작을 하게 되었다.

 

이 부분에서 플레이어를 담당하게 되었고, 첫 날이기에 에셋 및 UI 그리고 역할 담당을 나눴다.

 

플레이어의 스탯을 레벨업을 통해 올릴 수가 있기에, 패널을 제작해서 해당 스탯에 대한 정보, 레벨, 버튼, 수치 텍스트를 작업하고,

패널 제작을 했다.

 

private Dictionary<PlayerStatType, string> statNames = new Dictionary<PlayerStatType, string>()
{
    { PlayerStatType.Atk, "공격력" },
    { PlayerStatType.Crit, "크리티컬 확률" },
    { PlayerStatType.CritDamage, "크리티컬 데미지" },
    { PlayerStatType.GoldGain, "골드 획득량" }
};

private Dictionary<PlayerStatType, Func<Player, string>> statValue = new Dictionary<PlayerStatType, Func<Player, string>>()
{
    { PlayerStatType.Atk, p => p.atk.ToString() },
    { PlayerStatType.Crit, p => $"{p.crit.ToString("N1")}" +"%"},
    { PlayerStatType.CritDamage, p => $"{p.critDamage.ToString()}"+"%" },
    { PlayerStatType.GoldGain, p => $"{p.goldGainRate.ToString()}"+"%" }
};

 

스탯 타입과 수치를 딕셔너리로 관리했다.

 

그리고 패널에 존재하는 레벨업 버튼을 눌렸을 시, 이렇게 구현될 것이다. 라고 구조만 짜두었다.

public void OnUpgradeButtonClicked()
{
    upgradeSystem.Upgrade(statType);
    UpdateText();
}

 

아래에 있는부분은 TMP를 최신화 해주는 메서드이다.

 public void UpdateText()
{
    int level = StatManager.instance.GetStatLevel(statType);
    
    infoText.text = $"{statNames[statType]}\n<size=40>Lv. {level}</size>";
    statText.text = statValue[statType](player);
    
    int upgradeCost = (level - 1) * 3 * 30 + 30;
    buttonText.text = $"<size=40>{upgradeCost}G</size>\n<size=48>Lv UP</size>";
    
    upgradeButton.image.color = player.gold > upgradeCost ? activeColor : inactiveColor;
}

3. 학습하며 겪었던 문제점 & 에러

 

처음에 텍스트가 내가 원하는 값이 제대로 들어가질 않았다.

하나의 텍스트로 크기를 같이 조절해서 제작을 하고 싶었기에, <size>를 처음에 적용하는데 애를 먹었다.


4. 내일 학습 할 것은 무엇인지

 

전반적인 업그레이드 기능과 플레이어에 대한 부분을 제작할 예정이다.

'TIL' 카테고리의 다른 글

25.04.04 TIL  (0) 2025.04.04
25.03.28 TIL  (0) 2025.03.28
25.03.26 TIL  (0) 2025.03.28
25.03.25 TIL  (0) 2025.03.25
25.03.24 TIL  (0) 2025.03.24