작성
·
116
0
Player HpBar는 이상이 없었는데 NPC HpBar를 만들 때 ensure를 그대로 사용하면 null값이 나와서 에러가 나더라구요.
Player와 NPC가 생성되는 시점이 다른 게 원인인가요?
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
김규민님, NPC의 HpBar 설정 시 ensure(CurrentAttributeSet);
에서 null 에러가 발생하는 것은 CurrentAttributeSet
가 아직 초기화되지 않았음을 의미할 수 있습니다. Player와 NPC가 생성되는 시점과 관련이 있을 수 있습니다. 보통 생성되는 객체의 순서나 시간이 다르다면, 아직 필요한 컴포넌트가 초기화되기 전에 접근하게 되어 null 에러가 발생할 것입니다.
이를 해결하기 위해서는 다음을 고려해 보세요:
초기화 여부 확인: CurrentAttributeSet
가 초기화되었거나 바인딩된 후에 ensure
를 호출하세요. 객체의 생성 및 초기화 순서를 다시 검토하고 필요 시 초기화가 완료된 후 메서드를 호출하는 방법을 고민해 볼 수 있습니다.
Lifecycle 검토: NPC와 Player의 라이프사이클이 적절히 설정되어 있는지, 즉 필요한 컴포넌트들이 생성되고 초기화되는 시점을 명확히 확인하세요. 예를 들어, NPC가 플레이어 로직을 참고하거나, 그 반대의 경우에도 마찬가지로 중간 상태일 수 있습니다.
디버깅을 통한 점검: 현재 디버거에 표시된 변수들을 활용하여 ASC
및 CurrentAttributeSet
의 초기화 전과 후 상태를 점검하세요. 필요 시 DeferredInitialization
패턴을 적용하거나, 체크 포인트를 통해 조건부 로직을 사용할 수 있습니다.
더 많은 정보가 필요하거나 다른 문제가 있는 경우, 추가적인 코드나 프로젝트 설정을 공유해 주시면 보다 구체적인 도움을 드릴 수 있을 것 같습니다.
이 링크를 통해 NPC 생성 시 주의할 점을 참고하실 수 있습니다.
참고링크
한 가지 기능을 구현하시는 것을 먼저 보고 그 다음 따라하는 방식으로 강의를 진행하고 있었습니다.
영상의 23:41 부터 NPC HpBar를 구현하는데요 그 이전의 캐릭터 HPBar를 구현하는 과정까지는 이상이 없었습니다.
그래서 영상을 보면 if문으로 바꾸시길래 ensure 그대로 사용해봤더니 에러가 나는 걸 보고 궁금증이 생겨 질문하였습니다.