[TIL] Unity - Fosmon UI Refactoring - day 98

뭉크의 개발·2023년 12월 5일
0

Unity - Camp

목록 보기
66/70

🐧 들어가기 앞서

포스몬 사전 부분을 수정했다. 아무리 봐도 가독성도 떨어지고, 오류도 찾기가 힘들었다.


🐧 기억할 것 & 진행

1. 비동기 로딩 추가

LoadMonsterForPlanet 메서드에 비동기 로딩이 추가했다. 이전 코드에서는 몬스터 데이터를 동기적으로 로드했을 수 있는데, 새 코드에서는 async 키워드와 await를 사용하여 ResourceManager를 통해 비동기적으로 몬스터 데이터를 로드한다.

public async void LoadMonsterForPlanet(MonsterPlanet planet)
{
    // ...
    AssetReferenceList list = await ResourceManager.Instance.LoadResource<AssetReferenceList>(monsterSOAsset);
    // ...
    MonsterSO monster = await ResourceManager.Instance.LoadResource<MonsterSO>(monsterAsset);
    // ...
}

2.로딩 UI 처리

ShowLoadingUI 메서드를 호출하여 로딩 중임을 사용자에게 알리는 UI 요소의 활성화 및 비활성화 처리가 추가되었다. 이는 비동기 로딩 과정에서 사용자에게 로딩 상태를 시각적으로 표시하는 데 유용하다.

private void ShowLoadingUI(bool show)
{
    uiLoading.SetActive(show);
}

3. 오브젝트 풀링 사용

몬스터 버튼을 생성할 때 ObjectManager의 오브젝트 풀링 기능을 사용하는 코드가 추가되었다. 이는 성능 최적화를 위한 변경으로, 필요한 경우 풀에서 기존 오브젝트를 재사용하거나 새로 생성한다.

monsterButton = await ObjectManager.Instance.UsePool<FosmonButton>("FosmonButton", monsterListContainer);

4. 리스트 관리 개선

몬스터 리스트를 관리하는 로직이 개선되었다. 필요한 버튼의 수(requiredButtons)를 계산하여, 그 이상의 버튼은 비활성화하고 필요한 만큼만 활성화한다.

for (int i = requiredButtons; i < monsterListContainer.childCount; i++)
{
    monsterListContainer.GetChild(i).gameObject.SetActive(false);
}

5. 목록 초기화 방법

ClearMonsterList 메서드를 통해 몬스터 목록을 초기화하는 방법이 추가되었다. 이는 목록을 새로 로드할 때 기존 목록을 초기화하는 데 사용된다.

private void ClearMonsterList()
{
    foreach (Transform child in monsterListContainer)
    {
        child.gameObject.SetActive(false);
    }
}

🐧 게임에 구현한다면?

  • 기존 포스몬 사전 UI

  • 개선된 포스몬 사전 UI

행성을 선택하고, 사전 데이터를 불러와 포스몬 사전을 보여준다.




0개의 댓글