포스몬 사전 부분을 수정했다. 아무리 봐도 가독성도 떨어지고, 오류도 찾기가 힘들었다.
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);
// ...
}
ShowLoadingUI 메서드를 호출하여 로딩 중임을 사용자에게 알리는 UI 요소의 활성화 및 비활성화 처리가 추가되었다. 이는 비동기 로딩 과정에서 사용자에게 로딩 상태를 시각적으로 표시하는 데 유용하다.
private void ShowLoadingUI(bool show)
{
uiLoading.SetActive(show);
}
몬스터 버튼을 생성할 때 ObjectManager의 오브젝트 풀링 기능을 사용하는 코드가 추가되었다. 이는 성능 최적화를 위한 변경으로, 필요한 경우 풀에서 기존 오브젝트를 재사용하거나 새로 생성한다.
monsterButton = await ObjectManager.Instance.UsePool<FosmonButton>("FosmonButton", monsterListContainer);
몬스터 리스트를 관리하는 로직이 개선되었다. 필요한 버튼의 수(requiredButtons)를 계산하여, 그 이상의 버튼은 비활성화하고 필요한 만큼만 활성화한다.
for (int i = requiredButtons; i < monsterListContainer.childCount; i++)
{
monsterListContainer.GetChild(i).gameObject.SetActive(false);
}
ClearMonsterList 메서드를 통해 몬스터 목록을 초기화하는 방법이 추가되었다. 이는 목록을 새로 로드할 때 기존 목록을 초기화하는 데 사용된다.
private void ClearMonsterList()
{
foreach (Transform child in monsterListContainer)
{
child.gameObject.SetActive(false);
}
}
행성을 선택하고, 사전 데이터를 불러와 포스몬 사전을 보여준다.