04/02 본캠프 #69

guno park·2024년 4월 2일
0

본캠프

목록 보기
69/77

Save & Load

데이터 저장&불러오기 3일차.
아이템과 도감, 그리고 게임 데이터를 불러와서 세팅하는 부분까지 정리가 끝났다.
실제 적용해보진 못했지만 로직 상 잘못 된 부분은 없어보여서 일단 진행하고 있다.

도감 부분은 현재 가지고 있는 아이템들의 ID값을 리스트로 저장하여 json변환하여 저장하고 불러올 때 저장한 데이터의 ID들을 다시 도감에 세팅해주는 방식으로 구성되어야 한다.
TIL 작성하며 다시보니 불러오는 부분이 타입이 안 맞아서 다시 만들어주어야 할 것 같다.

아이템도 도감처럼 ID값만 저장했다가 아이템 DB를 활용하여 다시 배치해줄 예정이다.

Loading Scene

불러오기가 얼추 만들어져서 로딩씬도 구성해보고 있다.

사실 로딩하는 데 시간이 크게 들어가진 않아서 로딩씬이 의미가 없긴 하지만 '이렇게 구성할 수 있다' 정도로 생각하고 작업하고 있다.

로딩 씬에 앞서 데이터 매니저나 그 외에 몇몇 매니저들은 동적으로 동작 순서를 정해주어야 하기에 SingletonBase를 활용하여 Init하는 방법을 사용하기로 하였다.

로딩씬에서의 문제로는 구성을 어떻게 할지에 대해 고민하고 있다.
로딩바나 툴팁 등 기초적인 것을 배치하고, 진행도에 대한 콜백이 이루어져야 할 것인데,
DataManager에서 로딩이 진행될 때마다 콜백해서 진행도를 올린다고 하면 어떻게 표현해야 할 것인가? 하는 문제다.
코드적으로는 어렵지 않을 듯하여 시간을 들여 회의하며 고민해보면 해결될 것이다.

다만 다른 문제가 발생했는데 그건 다음 문단에서 다루기로 한다.

Singleton

싱글턴베이스를 만들어 Init하는 방법을 사용하는데, 싱글턴 되어있는 모든 매니저를 변경하는 것은 장점보다 단점이 많다고 판단되었다.

  1. 앞서 얘기한 것처럼 딱히 동작 순서가 중요하지 않은 매니저들도 존재한다.
  2. 직렬화하여 직접 오브젝트를 참조해놓은 매니저들이 많은데, 동적으로 할 경우 다시 그 오브젝트들을 할당하는데 문제가 생길 수 있다(Find 사용, Resources 사용 등)
    이런 방법들을 줄이기 위해 만들고 있어서 다시 사용하게 된다면 하는 의미가 퇴색된다고 생각한다.

추가로 조정해볼 것

데이터를 로드하는 과정은 전체적으로 코루틴으로 이루어져 있다. 이 내부에서 리소스 폴더의 데이터를 로드할 때 Resources.Load를 사용하는데 LoadAsync가 비동기라서 용도에 더 적절하다는 피드백을 받았다.

다른 팀원들의 작업에 방해가 되지 않도록 먼저 인트로씬~게임씬까지 진행될 수 있도록 변경한 후 비동기로 로드할 수 있도록 변경해볼 예정이다.

0개의 댓글