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 |