내일배움캠프 79일차 TIL + 유닛 목록 보기 추가
작업 내용
유닛 목록 수정
어제 만들던 유닛 목록 창을 업데이트했다. 이제 유닛을 열쇠를 써서 해금하고 해금된 유닛은 클릭하면 상세 정보가 뜬다.
정보는 그냥 해당 정보가 뜨는 UI들을 UnitDictionaryManager가 저장해놓고, 이를 업데이트 해준다. 유닛에 대한 정보는 해당 유닛을 클릭하면 해당 유닛의 ID를 넘겨주고 DataManager에 있는 SO 데이터를 참고하여 받아온다.
public void ShowUnitDetail(int unitID)
{
coverPanel.SetActive(true);
unitInfoScreen.SetActive(true);
UnitStatData unitData = DataManager.Instance.UnitSO[unitID];
unitIconSprite.sprite = userUnitSprites[unitID];
unitLvNName.SetText($"Lv {unitData.Lv} {unitData.CharacterName}");
string cost = "비용 : ";
if(unitData.Lv >= 5)
{
cost += $"비 영웅 유닛 5마리 + ";
}
cost += $"{unitData.UnitCost}골드";
unitCost.SetText($"{cost}");
string specialEffect = "없음";
string skillDesc = "없음";
if(unitID == 3)
{
specialEffect = "공격시 상대를 느리게 만듭니다.";
}
if(unitID == 5)
{
skillDesc = "10초마다 5초동안 공격 속도가 2배가 됩니다.";
}
else if(unitID == 6)
{
skillDesc = "3초마다 1.5배의 데미지로 적을 공격합니다";
}
else if( unitID == 7)
{
skillDesc = "5초마다 공격이 땅을 불태워 5초동안 해당 영역 위의 적에게 0.5초마다 20의 데미지를 줍니다";
}
unitStats.SetText($"공격력 : {unitData.Atk} 공격 속도 : {(1/unitData.AttackSpeed).ToString("F1")}회/초\n" +
$"사거리 : {unitData.AtkRange}m 공격 범위 : {unitData.AtkArea}\n" +
$"특수 능력 : {specialEffect}\n" +
$"스킬 : {skillDesc}");
}
게임씬 수정
게임씬에는 유닛 정보를 이전에는 SO와 Prefabs를 씬내에서 인스펙터창으로 등록시켜놓고 이를 불러와서 UI에 표시해줬었는데, 이제는 DataManager에서 사용 가능한 유닛을 제한하기에 이를 불러와서 표시하도록 바꿨고, 이렇게 해금이 풀린 사용 가능한 유닛은 게임에서 뽑아서 쓸 수 있다.
마무리
오늘은 유닛 목록을 완성하고 해금된 유닛만 쓸 수 있게 해주었는데 여전히 영웅 유닛은 같은 종류의 일반 유닛을 5마리 조합하고 조합비를 내면 조합하여 소환할 수 있게 할 생각이기에 좀 더 구현해야하긴하다.
아쉬운점은 SO에 스킬이나 특수효과 설명을 같이 넣기 어려워 데이터를 받아와도 유닛별로 따로 처리를 해주었는데 이에 대해서는 시간이 남으면 추가로 스킬이나 특수 효과의 데이터를 가져올만한 SO같은 구조를 구현해봐야겠다.