[WL-816] 섬 세이브를 경로 무관 단일 파일로 고정 + 기존 세이브 초기화 (#816)
PD 「세이브가 경로마다 갈리면 안돼. 그냥 기존 세이브를 초기화하고 단일 경로로 맞춰」. 원인(816f 실측): IslandManager.Awake 가 saveFileName 을 활성 씬 이름으로 잡아, 섬 단독 Play 는 Level01.dat · 게임 정식 경로(Additive)는 InGame.dat 로 갈렸다. 섬을 키워 놔도 다른 경로로 들어가면 초기 상태가 나왔다. 조치: - IslandManager.cs:119 **1줄** 훅 → WLIslandSave.ResolveSaveName() - 새 파일 WLIslandSave.cs + SO(WL_Island · enabled_=1) - 기존 세이브 4개(InGame/Level01/Level02/WL_FarmLook.dat) 백업 후 삭제 → Temp/claude/island_save_backup_143818 - enabled_=0 이면 원래 동작(씬 이름)으로 복귀 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
840655c06c
commit
33afe0b8dc
|
|
@ -116,7 +116,7 @@ namespace CryingSnow.FarmingIsland
|
|||
}
|
||||
|
||||
ItemDatabase.Initialize();
|
||||
saveFileName = SceneManager.GetActiveScene().name;
|
||||
saveFileName = WL.Island.WLIslandSave.ResolveSaveName(SceneManager.GetActiveScene().name); // WL-816: 경로마다 세이브가 갈리지 않게 이름 고정(끄면 원래대로)
|
||||
LoadGameData();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 0}
|
||||
m_Name: WLIslandSaveSettings
|
||||
m_EditorClassIdentifier: Assembly-CSharp:WL.Island:WLIslandSaveSettings
|
||||
enabled_: 1
|
||||
saveName: WL_Island
|
||||
verboseLog: 0
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1c09323f591e60f468e7943fb8c6bcb5
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// WLIslandSave.cs — 섬 세이브 파일 이름을 **경로와 무관하게 하나로** 고정한다.
|
||||
//
|
||||
// ■ 왜 필요한가 (Lead 실측 · 2026-09-13 · 816f 가 발견)
|
||||
// `IslandManager.cs:119` 가 `saveFileName = SceneManager.GetActiveScene().name` 이라
|
||||
// 같은 섬인데도 **들어온 경로에 따라 세이브가 갈린다**:
|
||||
// · 섬 씬만 단독 Play → `Level01.dat`
|
||||
// · 게임 정식 경로(로그인 → Load_Map → 섬이 Additive) → **`InGame.dat`**
|
||||
// → 섬을 키워 놔도 다른 경로로 들어가면 초기 상태가 나온다.
|
||||
//
|
||||
// ■ PD 결정(2026-09-13): 「세이브가 경로마다 갈리면 안돼. 그냥 기존 세이브를
|
||||
// 초기화하고 단일 경로로 맞춰」 → 이름을 하나로 고정한다.
|
||||
//
|
||||
// ■ 원본 수정은 `IslandManager.cs` **1줄**(그 대입문)뿐이다 — WL 하우스 규칙의
|
||||
// 「1줄 훅 + 새 파일」 그대로. `enabled_ = 0` 이면 원래 동작(씬 이름)으로 돌아간다.
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
namespace WL.Island
|
||||
{
|
||||
public sealed class WLIslandSaveSettings : ScriptableObject
|
||||
{
|
||||
[Tooltip("0 이면 원본 동작(활성 씬 이름)으로 되돌아간다.")]
|
||||
public int enabled_ = 1;
|
||||
|
||||
[Tooltip("모든 경로가 공유할 세이브 파일 이름(확장자 제외).")]
|
||||
public string saveName = "WL_Island";
|
||||
|
||||
[Tooltip("1 이면 해석 결과를 로그로 남긴다.")]
|
||||
public int verboseLog = 0;
|
||||
|
||||
static WLIslandSaveSettings s_cache;
|
||||
|
||||
public static WLIslandSaveSettings Get()
|
||||
{
|
||||
if (s_cache == null) s_cache = Resources.Load<WLIslandSaveSettings>("WL/WLIslandSaveSettings");
|
||||
return s_cache;
|
||||
}
|
||||
}
|
||||
|
||||
public static class WLIslandSave
|
||||
{
|
||||
/// <summary>`IslandManager.Awake` 의 1줄 훅이 부른다. 끄면 받은 값을 그대로 돌려준다.</summary>
|
||||
public static string ResolveSaveName(string sceneName)
|
||||
{
|
||||
var cfg = WLIslandSaveSettings.Get();
|
||||
if (cfg == null || cfg.enabled_ == 0 || string.IsNullOrEmpty(cfg.saveName)) return sceneName;
|
||||
if (cfg.verboseLog != 0)
|
||||
Debug.Log("[WL-816] 섬 세이브 이름 '" + sceneName + "' → '" + cfg.saveName + "' (경로 무관 고정)");
|
||||
return cfg.saveName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 45775bcbefc66bd43877386c53c1a0ef
|
||||
Loading…
Reference in New Issue