# WL-813k 레벨업 폭발 프로브 — 2026-09-09 00:42:21 · Unity 6000.3.23f1 · isPlaying=False ## ① 설정 에셋 · 프리팹 core asset = found · WLCombatCoreSettings.Enabled = True growth asset= found · WLGrowthSettings.Enabled = True · GrowthEvents.Enabled = True burstPrefab = FX_FireLevelUp · path = Assets/ResWork/EricWang/FX_FireSkill/Prefab/FX_FireLevelUp.prefab ParticleSystem = 9 · Renderer = 9 { "enabled": true, "verboseLog": false, "forwardToCombatEvents": true, "burstPrefab": { "instanceID": 84270 }, "burstParentToPc": true, "burstOffset": { "x": 0.0, "y": 0.10000000149011612, "z": 0.0 }, "burstScale": 1.0, "burstLifetimeSeconds": 0.0, "burstLifetimeMaxSeconds": 6.0, "burstMinIntervalSeconds": 0.5, "useEffectBudget": true, "hpRecoverRate": 1.0, "mpRecoverRate": 1.0, "showRecoverHud": true, "scalePunch": 1.1200000047683716, "scalePunchDuration": 0.2199999988079071, "statA": 10, "statB": 18, "statC": 8, "refreshStatOnLevelUp": false } stat 3종 = MaxHP / MaxMP / ATK (enum int 10/18/8) EffectBudget.Heavy limit = 2 · count = 0 ## ② 가짜 LevelUp 발행 → 이펙트 스폰 subscribed = True · LevelUp.Count = 1 fake SD_PC: Lv=6 · Get_Point()=25 · Get_UsePoint()=0 Raised=1 Dispatched=1 TotalRaised=1 last=LevelUp payload: prev→new = 6→7 · levelsGained=1 · statPointTotal=25 core forward: CombatEvents.LevelUp.Raised=1 last=LevelUp burst instance = FX_FireLevelUp(Clone) · pos = (0.00, 0.10, 0.00) · 수명(측정) = 6.00 s 스폰된 ParticleSystem = 9 · Heavy 슬롯 count = 1 counters: Handled=1 BurstSpawned=1 SkippedBudget=0 SkippedThrottle=0 SkippedNoPrefab=0 HP/MP 전회복: pc=null(에디트 모드 · 월드 PC 없음) → healHp=0 healMp=0 (실제 Heal 호출은 Play 필요 — 계산식은 §④에서 검증) 정리 후 Heavy count = 0 · instance = False ## ③ 이펙트 상한 · 연속 레벨업 스로틀 (a) Heavy 슬롯 선점 2/2 → count=2 BurstSpawned=0 SkippedBudget=1 Handled=1 note=budget 슬롯 반납 후 count=0 (b) 연속 5회 (interval=0.5s): Handled=5 BurstSpawned=1 SkippedThrottle=4 levelsGained(마지막)=5 · Raised=5 Dispatched=5 정리 후 Heavy count=0 ## ④ HP/MP 전회복 계산식 (LevelUpBurst.ComputeRecovery · 순수 함수) 설정 비율: hpRecoverRate=1 mpRecoverRate=1 showRecoverHud=True | HP/MaxHP | MP/MaxMP | 비율 | healHP | healMP | 결과 HP | 결과 MP | | 1/1000 | 5/200 | 1/1 | +999 | +195 | 1000 | 200 | | 370/1000 | 120/200 | 1/1 | +630 | +80 | 1000 | 200 | | 1000/1000 | 200/200 | 1/1 | +0 | +0 | 1000 | 200 | | 0/1000 | 0/200 | 1/1 | +1000 | +200 | 1000 | 200 | | 370/1000 | 120/200 | 0.5/0.5 | +500 | +80 | 870 | 200 | | 370/1000 | 120/200 | 0/0 | +0 | +0 | 370 | 120 | ## ⑤ GC (구독자 1 = LevelUpBurst · 스로틀 구간) (a) RaiseLevelUp(data=null) × 1000 → GC 델타 = 0 B (회당 0.00 B) (b) RaiseLevelUp(data=SD_PC) × 1000 → GC 델타 = 0 B (회당 0.00 B) ※ (b)−(a) 는 페이로드의 statPointTotal 이 부르는 **원본** SD_PC.Get_Point() → Get_UsePoint() 의 LINQ(Select/Sum) 할당이다. (c) 원본 SD_PC.Get_Point() × 1000 (이벤트 없이) → GC 델타 = 0 B (회당 0.00 B) BurstSpawned=1 SkippedThrottle=2005(측정 구간은 전부 스로틀) ## ⑥ C8 롤백 (원본 100% 복귀) (a) WLGrowthSettings.RuntimeDisabled=true → Enabled=False Raised=0 TotalRaised=0 Handled=0 BurstSpawned=0 (b) WLCombatCoreSettings.RuntimeDisabled=true → Enabled=False Raised=0 TotalRaised=0 Handled=0 BurstSpawned=0 (c) 에셋 없음(Instance=null) → WLGrowthSettings.Enabled=False GrowthEvents.Enabled=False Raised=0 TotalRaised=0 Handled=0 BurstSpawned=0 ClearCache 복구 → Instance=found Enabled=True (d) 복구 후 → Raised=1 Handled=1 BurstSpawned=1 instance=True ## ⑦ 정리 구독 해제 = True · Heavy count = 0 · Acquired/Denied = 5/1 활성 씬 = (none) · dirty = False (저장하지 않는다) 잔존 FX_FireLevelUp 파티클 = 0 # WL-813k GC 재측정 — 00:43:04 대조군 new object() × 1000 → GC.GetTotalMemory 델타 = 4096 B · Profiler.MonoUsed 델타 = 4096 B 대조군 원본 SD_PC.Get_Point() × 1000 (LINQ Select/Sum) → GC.GetTotalMemory 델타 = 0 B · Profiler.MonoUsed 델타 = 0 B RaiseLevelUp(null) × 1000 → GC.GetTotalMemory 델타 = 0 B · Profiler.MonoUsed 델타 = 0 B RaiseLevelUp(SD_PC) × 1000 → GC.GetTotalMemory 델타 = 0 B · Profiler.MonoUsed 델타 = 0 B BurstSpawned=2 SkippedThrottle=2000 Heavy count = 0 · 구독 해제 = True