816g 가 실측으로 지목: WLIslandSaveSettings.asset 의 m_Script 가 {fileID: 0}
이라 Resources.Load 가 null → 세이브가 여전히 Level01.dat / InGame.dat 로
갈리고 있었다(33afe0b8d 는 코드만 들어가고 설정이 안 붙은 상태였다).
원인: 유니티는 ScriptableObject 를 **클래스 이름과 같은 이름의 .cs 파일**
에서만 MonoScript 로 인식한다. 그 클래스가 WLIslandSave.cs 안에 있어
m_Script 를 바인딩할 수 없었다.
조치: WLIslandSaveSettings.cs 로 분리 + .asset 의 m_Script 를 새 GUID 로.
검증: ResolveSaveName("InGame") = "WL_Island" (런타임 실측) · 컴파일 오류 0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PD 추가 지시 2건.
① 「던전 열기는 한 번만 · 이후 같은 자리에 또 등장하면 안 된다」
던전 한 줄 = 발판 한 자리(`WLDungeonDef.platformUseFarm`·`platformPosition`).
값을 치르면 그 자리는 영영 비고 다음 발판은 표가 지정한 **다른 자리**에 선다.
해금 수는 PlayerPrefs 에 남겨 껐다 켜도 유지된다(실측: Play 재시작 후에도
던전 1 그대로 · 밭 자리 발판 없음 · 다음 발판만 (-2,0,-2) 가격 30).
FI `RefreshIsland` 의 가격표 재생성이 우리 발판을 되살리지 않는 것도 실측
(섬 확장 4→5칸 후 발판 수 1 유지 · 자리 그대로).
덤으로, 골드가 많을 때 가만히 서서 던전이 연달아 팔리던 것도 막았다.
② 던전 진입 멈춤
던전 씬에는 `MobControlMgrList` 가 0개다(실측: WL_Dungeon01·02·ArenaProto 전부 0).
섬과 같은 이유로 로딩 칸 0 이 안 찬다 → 던전 표의 씬 이름을 로딩 보정 대상에 포함.
③ §1 남은 몫 — 새로 연 타일이 `WL/HullOutline` 패스를 못 받아(슬롯 1 vs 2)
경계에서 테두리 유무가 갈렸다. 열린 직후 기존 타일의 머티리얼 배열을 그대로
물려준다(새 머티리얼 0개). 실측: 8칸 전부 재질 조합 1가지.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PD 지시 3건 중 §2·§3.
- 초기 상태: 밭(Farm·Soil) 렌더러·콜라이더만 끄고(오브젝트는 살려 둔다 —
끄면 섬 확장 때 FI 가 꺼진 오브젝트에서 코루틴을 시작해 콘솔 에러가 난다),
던전 입구는 해금한 수만큼만 세운다. 처음에는 0개.
- 발판 = FI 가 섬 확장에 쓰는 **가격판 프리팹 그대로**(PD 정정: 새 모델 금지).
실측으로 프리팹 렌더 범위를 재서 밭 한가운데·바닥 바로 위로 맞춘다
(원본은 물 위 y≈-0.5 에 눕도록 돼 있어 섬 위에 그냥 놓으면 지면 아래로 들어간다).
- 지불도 FI `Purchaser` 그대로 — 보이지 않는 더미 `Island` 를 대상으로 물리고
그 `OnActivated`(public event)를 받아 던전 표의 한 행을 켠다. FI 코드·프리팹 0줄.
- 시작 골드 500 → 10. `IslandManager.Awake` 안에 이미 있던 1줄 훅(세이브 이름)
시점에서 `startingMoney` 를 바꾼다 = FI 새 줄 0.
- 던전 하나 = 발판 한 자리. 값을 치르면 그 자리는 영영 비고 다음 발판은 다른 자리.
- 던전 씬도 `MobControlMgrList` 가 0개라 로딩 칸 0 이 안 찬다 → 던전 표의
씬 이름을 로딩 보정 대상에 포함.
되돌리기: `WLIslandSettings.gateFlowEnabled = 0` 하나로 지금 상태 100 %.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PD 「title 씬에서 시작하면 로딩 90%에서 더이상 진행이 안된다」
→ 그래서 _MainMenu 로 우회했고, 그 탓에 우리 섬에 도달한 적이 없어
「풀밭이 전혀 안 바뀐다」로 이어졌다. 두 증상의 뿌리가 하나였다.
원인(PD 의 멈춘 화면에서 Lead 직접 실측):
list_loadingComplete = [False, True]
칸 1 = UI 준비(NewGameUI.cs:88) → True
칸 0 = 몬스터 프리팹 로드(MobControlMgrList.cs:28) → False
섬(Level01·맵 900)은 전투 맵이 아니라 MobControlMgrList 가 아예 없다
(실측 인스턴스 0) → 칸 0 이 영원히 False → 로딩창이 안 닫힌다.
씬·풀·게이트·룩·PC 는 전부 정상 생성돼 있었고 화면만 가려져 있었다.
조치: 섬 씬이 붙은 뒤 MobControlMgrList 가 없으면 칸 0 을 우리가 채운다.
전투 맵은 건드리지 않는다(그쪽은 원본이 채운다). 원본 파일 0줄 수정.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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>
PD 보고: 'OnStep' on animation 'Run' has no receiver!
원인(실측): WLIslandPcRig 가 FI 플레이어의 컨트롤러를 우리 치비 비주얼의
Animator 에 복사해 같은 클립을 함께 돌린다(816d). FI 의 Run 클립이 쏘는
OnStep 의 수신자 PlayerController(FarmingIsland/Scripts/Core/PlayerController.cs:243)
는 부모에 있는데, 유니티는 애니메이션 이벤트를 Animator 와 같은 GameObject
에만 보낸다 → 비주얼 자식에서 수신자 없음.
부모 Animator 가 이미 같은 이벤트를 PlayerController 로 보내 발소리는 정상
재생된다. 비주얼 쪽은 중복이므로 수신자를 만들면 발소리가 두 번 난다
→ 비주얼 Animator 의 fireEvents 만 끈다. 기존 파일 0줄 수정(자가 부착).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- NavMeshSurface.useGeometry = PhysicsColliders — RenderMeshes 기본값은 메시 Read/Write 를 요구해 콘솔 에러 100건(실측)
- 베이크 후 앵커 위 NavMesh 존재를 로그로 남긴다(WL_Dungeon01 실측: (0,0.07,0) 있음)
- 이름표·「들어가기」 버튼에 한글 TMP 폰트 지정(기본 폰트에는 한글 글리프가 없어 □ 로 나왔다)
- 던전 3 입구를 덤불 위치에서 (2.5,0,11) 로 이동(에디트 모드 레이캐스트 실측)
- 던전 입장 시 프롬프트 숨김
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- NavMeshSurface 기본값(collectObjects=All · useGeometry=RenderMeshes)을 그대로 쓴다(게이트 PASS)
- 섬 카메라 소유권 SO(islandCameraOwner 기본 1 = FI 카메라) · 떠날 때 되살림
- WL 전투 PC 는 Addressables 콜백으로 늦게 생긴다 → hidePcWatchSeconds 동안 감시해 숨김
- 프로브 전용 DebugSceneOverride(던전 복사본 씬 미등록 구간 검증용)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>