로딩씬을 구성하기 위해 생각을 해보았다.
로딩씬이 필요한 이유 : 게임 진행에 Resoruces.Load 호출을 줄이기 위해 해당하는 오브젝트들을 미리 준비하기 위해서
로딩씬을 구성하기 위해 생각할 것 : 각각의 데이터에서 미리 준비해야할 데이터들을 정리하고 어떤 구조로 준비할 것인지 생각하기 + 로딩씬으로 진입할 때 처음 플레이하는지 or 이어하는 지에 따라 무엇이 달라질 것인지.
로딩씬을 구성한 이후 변경해야 할 것들 : 기존에 작성된 동적으로 준비하는 과정들을 미리 준비된 오브젝트, 데이터들을 재사용하는 메서드로 변경해주기
위 3가지에 +a가 필요하지 않을까.
IEnumerator SetDatas()
{
//TODO : DataSet에 관한 개별 메서드 만들기 + 불러오기 했을 때 세팅되는 부분까지 작성하기.
//전체적으로 다 코루틴으로 꾸려주어야함.
yield return StartCoroutine(dialogueDBSet()); //이렇게 하면 끝날때까지 기다림.
Debug.Log("다이얼로그 세팅 완료");
yield return StartCoroutine(PlaceDBSet());
Debug.Log("장소 세팅 완료");
yield return StartCoroutine(SetItemData());
GameManager.Instance.Playerinformation = Playerinformation; //TODO : 나중에 로드 구현하고 변경
}
기존에는 그냥 사용하던 데이터세팅하는 메서드지만, 세부적으로 Load의 호출이 많기 때문에 전체적으로 코루틴으로 구성하여 각 메서드들을 대기하여 차례차례 로딩하도록 구성해주었다.
처음에는 큰 틀만 코루틴으로 하고 내부적으로는 일반 메서드를 사용하려고 했지만, 그렇게하면 메서드가 완료되는 시점을 특정할 수가 없기에 모두 코루틴으로 변경하였다.
각자 맡은 파트별로 데이터 정리용 스크립트를 만들다보니 로딩씬에서 관리해야할 부분이라던지 UI를 관리하는 부분들이 많이 분리되어 있었다. 오늘 내일 작업해서 모두 각 기능별로 통합하고, GameManager를 통해 호출할 예정이다.
특히 데이터에 관련한 부분은 추후 Save & Load에 또 연관될 예정이기 때문에 잘 정리해야 한다.