fix(monster): MonsterAttack.OnBeginPlay AnimationClip 타입가드 (LEA-3023/2007) #64
Reference in New Issue
Block a user
Delete Branch "fix/monsterattack-animationclip-guard"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
증상
전투맵 진입 시 몬스터 수만큼 서버 로그에 반복:
[LEA-3023] TypeMismatch : 'AnimationClip'으로 타입을 사용해야 합니다—MonsterAttack.OnBeginPlay본문 10행[LEA-2007] AttemptToIndex : 'clip'은 nil입니다— 11행근본 원인 (systematic-debugging)
MonsterAttack.OnBeginPlay는 chasemonster 모델에서 상속된 물리 근접공격 스크립트로, 스프라이트의 AnimationClip 프레임으로 공격범위(BoxShape)를 계산한다. 그런데 이 게임의 몬스터 스프라이트는 (공식 필드맵에서 수확한) 정적 Sprite라,LoadAnimationClipAndWait(SpriteRUID)가 AnimationClip을 못 받아 nil 반환(엔진이 LEA-3023 로깅) → 다음 줄clip.Frames[1]이 nil 인덱싱(LEA-2007).전 codeblock 교차검색 결과
MonsterAttack/AttackNear를 호출하는 코드가 어디에도 없다 — 카드 기반 턴제 전투에서 이 멜리 로직은 죽은 코드이고, OnBeginPlay가 clip 로드에서 크래시하므로 공격 타이머조차 안 걸린다. 즉 게임 동작 영향 0, 로그 스팸만 발생(같은 세션 로그에서 덱 컨트롤러 정상 동작 확인).근거: 에러 메시지 + 코드 정독 + 라이브 서버 로그(
methodLineNum10/11) + 전 codeblock 교차참조 + 공식 API 문서(ResourceType.AnimationClip=6,GetTypeAndWait반환형).수정
LoadAnimationClipAndWait호출 전에GetTypeAndWait로 리소스 타입을 확인해ResourceType.AnimationClip이 아니면 early-return + clip nil 가드. 두 에러를 모두 원천 차단한다.변경 파일
RootDesk/MyDesk/MonsterAttack.codeblock—OnBeginPlay에 가드 6줄(타입 3 + nil 3)⚠️ 적용/검증 (메이커 필요)
MonsterAttack은 생성기가 없는 메이커 저작 codeblock이라 디스크를 직접 패치했다. 반영하려면:
코드는 정적 검증 완료(패치된 OnBeginPlay 29줄, API 문서 대조). 런타임 검증은 reload 후 플레이테스트로.
🤖 Generated with Claude Code