SaveManager と保存システム
SaveManager は保存・読み込み・削除を ISaveService インターフェースの背後に抽象化します。
PlayerManager から切り離されているため、後からローカルファイル方 式を Firestore / AWS / Cloudflare D1 などのクラウドバックエンドへ差し替えても、ゲームコードには一切手を入れる必要がありません。
構成
SaveManager ← DI로 주입
└─ ISaveService ← 인터페이스 (백엔드 교체 지점)
└─ LocalSaveService ← QuickSave 기반 로컬 구현체
クイックスタート
1. DI 登録
builder.Register<PlayerManager>();
builder.Register<ISaveService, LocalSaveService>();
builder.Register<SaveManager>();
2. 設定
Configure() は ISaveService インターフェースのメソッドです。DI から ISaveService を注入するか、Resolve して呼び出します。
var saveService = ServiceLocator.Resolve<ISaveService>();
// 반드시 Save/Load 전에 한 번 호출
saveService.Configure(encryptionKey: "myKey12345678!", version: 1);
var save = ServiceLocator.Resolve<SaveManager>();
encryptionKey— 16 文字以上の文字列で保存ファイルを暗号化します。version— データ構造が変わった際のマイグレーションに利用します。
同期 API
save.Save(); // 현재 상태를 디스크에 저장
PlayerManager loaded = save.Load(); // 저장된 데이터 불러오기
save.Delete(); // 저장 파일 삭제
非同期 API
await save.SaveAsync();
PlayerManager loaded = await save.LoadAsync();
await save.DeleteAsync();