XR플밍 - (주말작업) 기업협약 프로젝트 0.3일차 (8/17)

이형원·2025년 8월 17일
0

XR플밍

목록 보기
168/215

1. 금일 한 업무

개인 일정이 있어 작업 시간이 별로 없었다. 당장 할 수 있는 업무 자체도 많지는 않다 보니, 간단하게만 작업을 하고 대신 조금 쉴 수 있는 시간을 가졌다.

  • 리더 시스템 구현(UI적 구현만 우선) - 제일 첫 번째 칸의 캐릭터가 리더가 되며 리더 효과 표시 및 리더가 편성되지 않았을 시 팝업 띄우는 부분 구현

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

해당 기능을 추가하는 데 별 어려움은 없었다. 사실상 작업 자체도 간단하게 추가할 수 있었다.

  • 프리셋 변경 과정에서 제일 첫 번째 슬롯이 비었을 때 예외처리
public void SelectCharacterPreset(int index)
{
    if (_currentCharacterSOs[0] == null)
    {
        _popUpUI.SetActive(true);
        _popUpText.text = "Leader is not added.\nPlease add.";
        return;
    }

    _currentCharacterSOs = _selectedCharacters[index].CharLists;
    _currentCost = 0;
    _currentOverallPower = 0;
    for(int i = 0; i <  _currentCharacterSOs.Length; i++)
    {
        if (_currentCharacterSOs[i] != null)
        {
            _currentCost += _currentCharacterSOs[i].Cost;
            _currentOverallPower += _currentCharacterSOs[i].OverallPower;
        }
    }

    OnCharacterDataChanged?.Invoke();
}
  • 경고 패널이 떴을 때에는 다른 UI와 상호작용하지 못하도록 투명한 패널로 덮어버리고, 리더가 배치되지 않았다는 패널을 출력

  • 버튼을 눌렀을 때 해당 패널 자체가 비활성화되도록 인스펙터로 바로 연결

이와 같이 간단한 방법으로 프리셋 상 리더 효과에 대한 예외처리가 가능하며, 아래와 같이 이벤트가 활성화되었을 때 리더 효과 표기에 대한 부분을 추가해 주면 된다.

private void ShowLeaderEffectInfo()
{
    if (_currentCharacterSOs[0] == null) _leaderEffectText.text = "LeaderEffect : None";
    else _leaderEffectText.text = $"LeaderEffect : {_currentCharacterSOs[0].LeaderEffectDescription}";
}

3. 개선점 및 과제

3.1 로비 씬 제작

3.2 캐릭터 편성 관련 데이터 - 파이어베이스 데이터베이스에 연결 및 캐릭터 담당자 데이터와 연결

3.3 CSV 데이터를 스크립터블 오브젝트로 변환하기

3.4 캐릭터 배치 시스템

3.5 리팩토링

profile
게임 만들러 코딩 공부중

0개의 댓글