인프런 커뮤니티 질문&답변

해해미님의 프로필 이미지
해해미

작성한 질문수

[유니티 3D] 실전! 생존게임 만들기 - Advanced

벌목 시선 처리

thePlayerController의 값이 갑자기 null로 바뀌는 현상이 발생합니다

작성

·

112

·

수정됨

0

나무만 보면 공격이 되지 않는 버그가 생겨 CloseWeaponController.cs에서 Debug.Log로 확인 결과 Start()에선

thePlayerController = FindObjectOfType<PlayerController>();

에 의해서 값이 잘 들어가있는걸 확인했으나 TryAttack()에서는 갑자기 thePlayerController의 값이 null로 바뀌는 현상이 발생합니다.

일단은 위 코드를 TryAttack() 안으로 옮기니 일단은 버그가 해결되었습니다. 혹시 원인이 무엇인지 알 수 있을까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
해해미님, thePlayerController의 값이 null로 바뀌는 현상에 대해 질문해주셨군요. FindObjectOfType<PlayerController>()Start()에서 호출했을 때는 값이 제대로 할당되었지만, TryAttack()에서는 null이 되는 경우, 몇 가지 가능한 원인이 있습니다.

  1. PlayerController 객체가 TryAttack()이 호출되기 이전에 어떤 이유로 인해 삭제되거나 비활성화되었을 수 있습니다. 이 경우, FindObjectOfType 메소드가 null을 반환하게 됩니다.
  2. Start()TryAttack()이 호출되는 순서에 문제가 있을 수 있습니다. 예를 들어, TryAttack()Start() 메소드보다 먼저 호출될 경우, 초기화되지 않은 상태에서 thePlayerController를 참조하려고 하여 null이 될 수 있습니다.

TryAttack() 내부로 코드를 옮겨 문제가 해결되었다면, PlayerController 인스턴스에 대한 참조가 제대로 유지되지 않는 문제 또는 호출 순서 문제일 가능성이 높습니다. 좀 더 정확한 원인을 파악하기 위해서는 PlayerController 객체의 생명주기와 TryAttack()이 호출되는 시점을 자세히 살펴보아야 할 것입니다.

이와 관련해 추가적인 질문이나 도움이 필요하시다면 언제든지 문의해주세요.

해해미님의 프로필 이미지
해해미

작성한 질문수

질문하기