구현 내용
1. TitleScene 생성

public class TitleScene : MonoBehaviour
{
[SerializeField] private GameObject Root_UI = null;
// TitleScene 최초 호출 시점
void Start()
{
GameManager.Instance.InitDefaultManager();
UIManager.Instance.SetUIRoot(Root_UI);
UIManager.Instance.SetActiveRoot(UI.BackGround, false);
// 타이틀
UIManager.Instance.Open<TitleWindow>(UI.Main, "Prefabs/UI/Window/TitleWindow");
}
}
기본적인 타이틀 UI를 셋팅하고, GameManager를 최초로 실행해 준다.
2. LobbyScene 생성

public class LobbyScene : MonoBehaviour
{
[SerializeField] private GameObject Root_UI = null;
private void Start()
{
UIManager.Instance.SetUIRoot(Root_UI);
UIManager.Instance.SetActiveRoot(UI.BackGround, false);
// 로비
UIManager.Instance.Open<LobbyWindow>(UI.Main, "Prefabs/UI/Window/LobbyWindow");
}
}
TitleScene과 동일한 방법으로 Lobby UI를 불러와 준다. GameManager은 TitleScene에서 최초 생성하였고, DontDestroyOnLoad 를 사용하기 때문에 더 이상 불러올 필요가 없다.
3. 데이터 저장
https://kkln2486.tistory.com/408
데이터 저장 (Easy Save 에셋)
Easy save데이터를 쉽고 빠르게 저장 가능모바일 기기에서도 빠른 속도 JSON 및 XML과 비교하여 훨씬 빠르고 훨씬 적은 메모리 사용효율적이고 안전한 데이터 암호화빠른 개발과 오래된 지속적인 업
kkln2486.tistory.com
데이터 저장을 위해서 Easy Save 에셋을 사용했다. 서버를 사용하지 않고, 데이터를 저장하기 위해서는 Json 데이터 저장 방법을 이용해야 하는데, 직접 구현할 수도 있지만, 위 에셋을 사용하는 것이 훨씬 더 간단하고, 보안성이 높다. 이미 구현해 본적이 있기 때문에 다른 기능 구현에 집중하고, 데이터 저장은 에셋으로 쉽게 구현하였다!
4. 씬 이동

TilteScene에서 최초의 데이터 로드를 하고, 만약 로드할 데이터가 없다면 기본적인 유저 데이터를 생성해서 저장하도록 했다. 그리고 Start 버튼을 누르면, LobbyScene으로 이동하도록 하였다.
public async UniTask LoadScene(string sceneName)
{
// 현재까지 데이터를 저장
DataManager.Instance.SaveData();
// 씬을 비동기로 로드 (싱글 모드)
await SceneManager.LoadSceneAsync(sceneName).ToUniTask();
// 씬 로드 완료 후, DataLoader를 설정
DataManager.Instance.SetDataLoader();
// 씬 로드 완료 후, DataLoader에 데이터를 로드
DataManager.Instance.LoadData();
}
ScenesManager를 생성해서 위 함수를 만들었다. 씬을 비동기로 로드한 뒤, 로드가 완전히 끝났을 때, 이동한 씬에서 DataLoader를 DataManager에 참조하도록 하였다. DataLoader는 각각 씬에서 유저 데이터를 저장하는 역할을 한다. 각각의 씬에 DataLoader가 있으며 씬을 이동할 때, 현재 유저 데이터를 저장하고 이동한 씬에서 유저 데이터를 로드하는 방식으로 구현했다.
회고
오랜만에 개인 프로젝트를 진행하는데, 생각보다 Easy Save 에셋을 사용하는데 조금 햇갈렸다. 이전에 정리해 놓은 문서가 있지만, 사용을 안한지 오래되서 햇갈리는 부분이 있었지만 잘 구현할 수 있었다. Easy Save를 사용한 이유는 별도의 서버 없이 클라이언트에 유저 데이터를 저장하고 랭킹과 같은 데이터만 뒤끝 SDK를 사용해서 구현할 예정이기 때문이다. 물론 추후 프로젝트에서는 서버 컴퓨터나 몇가지 준비가 된다면 에셋을 사용하지 않고 서버에 데이터를 저장하는 방식으로 구현해 볼 예정이다. 그렇게 되면 더이상 Easy Save 에셋을 사용하지 않아도 되지만 아직까지는 잘 활용하도록 하겠다!
'1인 개발 > Real Fighter' 카테고리의 다른 글
| Real Fighter 개인 프로젝트 5일차 (0) | 2025.08.26 |
|---|---|
| Real Fighter 개인 프로젝트 4일차 (3) | 2025.08.18 |
| Real Fighter 개인 프로젝트 4일차 (3) | 2025.08.17 |
| Real Fighter 개인 프로젝트 3일차 (0) | 2025.08.16 |
| Real Fighter 개인 프로젝트 1일차 (1) | 2025.08.12 |