UI를 반영하기 위해서 이미지를 입힐 때, 이와 같이 픽셀의 조절을 통해 이미지의 해상도를 조정하자.
기획팀의 요청으로, 프리셋 선택 창에서 맨 위의 프리셋은 선택한 채로 UI가 켜지게 해 달라는 요청이 있었다. 이 부분을 처리하기 위해, 초기에는 -1로 세팅해서 활성화된 프리셋이 없을 경우 선택하지 않은 상태로 출력하고, UIUpdate가 진행되는 부분에서 최초의 활성화된 부분을 bool로 체크한 뒤 선택하는 방식으로 구현했다.
private void Init()
{
if (TempDataManager.Instance == null) return;
_controller.SetSelectedPresetIndex(-1);
// 프리셋이 활성화가 안 되어 있으면 잠겨 있다고 표시하는 UI 출력
if(TempDataManager.Instance.PresetData.Count < _index + 1)
{
SetactiveGameobject("LockedPartyButton");
Debug.Log("잠김");
return;
}
// 프리셋이 세팅되어 있지 않으면(리더가 없는 상태이면) 프리셋 추가 UI 출력
if (TempDataManager.Instance.PresetData[_index].Statuses[0].Data == null)
{
SetactiveGameobject("DisabledPartyButton");
Debug.Log("비활성화됨");
return;
}
// 프리셋이 사용 가능한 상태이면 하단의 과정 진행
SetactiveGameobject("ActivePartyButton");
UpdateUI();
}
#region UI Update
private void UpdateUI()
{
UnitStatus[] preset = TempDataManager.Instance.PresetData[_index].Statuses;
int damage = 0;
bool activePresetExists = false;
for (int i = 0; i < preset.Length; i++)
{
if (preset[i].Data != null)
{
if(!activePresetExists)
{
_controller.SetSelectedPresetIndex(i);
activePresetExists = true;
}
_presetImages[i].color = Color.white;
_presetImages[i].sprite = preset[i].Data.Icon;
damage += preset[i].CombatPower;
}
else
{
_presetImages[i].color = Color.black;
_presetImages[i].sprite = _xImage;
}
}
_leaderName.text = preset[0].Data.Name;
_partyDamageText.text = $"Party Damage : {damage}";
// 시너지 입력 방식은 시너지 활성화 기능 구현 이후 진행
//_synergy1Text.text = preset[0].Data.EnhancementData.ClassSynergy.ToString();
//_synergy2Text.text = preset[0].Data.EnhancementData.ClassSynergy.ToString();
Debug.Log("활성화됨");
}