XR플밍 - 12. UnityEngine3D Reactive 프로그래밍 - 기업협약 프로젝트 6일차 (8/25)

이형원·2025년 8월 25일
0

XR플밍

목록 보기
176/215

1. 금일 한 업무

  • 로비 씬의 폴리싱 작업
  • 게임 진입 후 프리셋 선택 화면에서 활성화된 가장 위의 프리셋을 선택한 채로 초기화되도록 기능 추가

2. 문제의 발생과 해결 과정

2.1 폴리싱 작업

UI를 반영하기 위해서 이미지를 입힐 때, 이와 같이 픽셀의 조절을 통해 이미지의 해상도를 조정하자.

2.2 활성화된 프리셋 중 첫 번째 것을 선택하기

기획팀의 요청으로, 프리셋 선택 창에서 맨 위의 프리셋은 선택한 채로 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("활성화됨");
}

3. 개선점 및 과제

3.1 빌드를 위한 합치기 작업

3.2 가챠 시스템 구현

3.3 튜토리얼 시스템 구현

3.4 시너지 시스템 구현

profile
게임 만들러 코딩 공부중

0개의 댓글