diff --git a/Assets/WL/Island/Resources/WL/WLIslandSaveSettings.asset b/Assets/WL/Island/Resources/WL/WLIslandSaveSettings.asset index 3461f52a0..a2e0eeb7a 100644 --- a/Assets/WL/Island/Resources/WL/WLIslandSaveSettings.asset +++ b/Assets/WL/Island/Resources/WL/WLIslandSaveSettings.asset @@ -9,9 +9,9 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 0} + m_Script: {fileID: 11500000, guid: 872d40f4ac576ea4eac94fce5f49fdd8, type: 3} m_Name: WLIslandSaveSettings - m_EditorClassIdentifier: Assembly-CSharp:WL.Island:WLIslandSaveSettings + m_EditorClassIdentifier: enabled_: 1 saveName: WL_Island verboseLog: 0 diff --git a/Assets/WL/Island/WLIslandSave.cs b/Assets/WL/Island/WLIslandSave.cs index e854c78a8..1bd93a481 100644 --- a/Assets/WL/Island/WLIslandSave.cs +++ b/Assets/WL/Island/WLIslandSave.cs @@ -19,25 +19,9 @@ 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("WL/WLIslandSaveSettings"); - return s_cache; - } - } + // 🔴 `WLIslandSaveSettings`(ScriptableObject)는 **`WLIslandSaveSettings.cs` 로 분리**했다. + // 유니티는 SO 를 클래스 이름과 같은 이름의 .cs 파일에서만 MonoScript 로 인식한다 — + // 여기 있던 동안 `.asset` 의 `m_Script` 가 비어 세이브 단일화가 동작하지 않았다(816g 실측). public static class WLIslandSave { diff --git a/Assets/WL/Island/WLIslandSaveSettings.cs b/Assets/WL/Island/WLIslandSaveSettings.cs new file mode 100644 index 000000000..8efabf26c --- /dev/null +++ b/Assets/WL/Island/WLIslandSaveSettings.cs @@ -0,0 +1,36 @@ +// ───────────────────────────────────────────────────────────────────────────── +// WLIslandSaveSettings.cs — 섬 세이브 이름 고정 설정(SO). +// +// 🔴 왜 파일을 나눴나 (Lead 실측 · 2026-09-13) +// 유니티는 `ScriptableObject` 를 **클래스 이름과 같은 이름의 .cs 파일**에서만 +// `MonoScript` 로 인식한다. 이 클래스가 `WLIslandSave.cs` 안에 있던 동안에는 +// `.asset` 의 `m_Script` 가 **`{fileID: 0}`** 로 비어 저장돼 +// `Resources.Load` 가 null 을 돌려줬고, 그래서 세이브 단일화(main `33afe0b8d`)가 +// **동작하지 않았다**(816g 가 실측으로 지목: `WL_Island.dat` 가 아니라 +// `Level01.dat`/`InGame.dat` 가 생김). 파일을 분리해 바로잡는다. +// ───────────────────────────────────────────────────────────────────────────── + +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("WL/WLIslandSaveSettings"); + return s_cache; + } + } +} diff --git a/Assets/WL/Island/WLIslandSaveSettings.cs.meta b/Assets/WL/Island/WLIslandSaveSettings.cs.meta new file mode 100644 index 000000000..3aa90b92a --- /dev/null +++ b/Assets/WL/Island/WLIslandSaveSettings.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 872d40f4ac576ea4eac94fce5f49fdd8 \ No newline at end of file