작성
·
112
·
수정됨
0
나무만 보면 공격이 되지 않는 버그가 생겨 CloseWeaponController.cs에서 Debug.Log로 확인 결과 Start()에선
thePlayerController = FindObjectOfType<PlayerController>();
에 의해서 값이 잘 들어가있는걸 확인했으나 TryAttack()에서는 갑자기 thePlayerController의 값이 null로 바뀌는 현상이 발생합니다.
일단은 위 코드를 TryAttack() 안으로 옮기니 일단은 버그가 해결되었습니다. 혹시 원인이 무엇인지 알 수 있을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
해해미님, thePlayerController
의 값이 null
로 바뀌는 현상에 대해 질문해주셨군요. FindObjectOfType<PlayerController>()
를 Start()
에서 호출했을 때는 값이 제대로 할당되었지만, TryAttack()
에서는 null
이 되는 경우, 몇 가지 가능한 원인이 있습니다.
PlayerController
객체가 TryAttack()
이 호출되기 이전에 어떤 이유로 인해 삭제되거나 비활성화되었을 수 있습니다. 이 경우, FindObjectOfType
메소드가 null
을 반환하게 됩니다.Start()
와 TryAttack()
이 호출되는 순서에 문제가 있을 수 있습니다. 예를 들어, TryAttack()
이 Start()
메소드보다 먼저 호출될 경우, 초기화되지 않은 상태에서 thePlayerController
를 참조하려고 하여 null
이 될 수 있습니다.TryAttack()
내부로 코드를 옮겨 문제가 해결되었다면, PlayerController
인스턴스에 대한 참조가 제대로 유지되지 않는 문제 또는 호출 순서 문제일 가능성이 높습니다. 좀 더 정확한 원인을 파악하기 위해서는 PlayerController
객체의 생명주기와 TryAttack()
이 호출되는 시점을 자세히 살펴보아야 할 것입니다.
이와 관련해 추가적인 질문이나 도움이 필요하시다면 언제든지 문의해주세요.