• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

버그가 되는 이유

21.09.08 03:43 작성 조회수 220

0

안녕하세요

 

지금 설명하시는 부분이 버그인 이유와 벌어지는 이유가 맞는지 확인 부탁 드립니다

 

현재 버그는 적, 운석 게임 오브젝트가 만들어졌지만 아직 화면속에 나타나질 않았을 시점에, 그 오브젝트를 쏴서 부숴버리는 경우를 말씀 하시는 거죠?

Destroy()야 playerShot에서 호출 되는 거니까 맞추는 데로, 게임 오브젝트가 부숴지는 건 실행이 되겠지만 OnbecameInvisible은 본래 보였던게 안보여야하는건데, 부숴지는 시점에 어직 보여지지도 않기 때문에 실행이 안되는 게 맞나요? 더불어 남아있는 적 카운터도 작동을 하지 않는 거구요?

답변 2

·

답변을 작성해보세요.

0

Hyobin Kim님의 프로필

Hyobin Kim

질문자

2021.09.14

OnBecameInvisble()이라는 함수가 유니티 API 자료에서는 그냥 안보이게 되면 호출이 된다라고 만 하는데

구체적으로는 보였던게 안보일 때는 말하는거라고 봐야겠죠?

그러니까, 저 버그가 발생 했을때, 화면속에 안보이는게 파괴되어서 또 다시 한번 더 안보이게 됐지만, OnBecameInvisible()은 호출이 안됀거구요

0

안녕하세요. 

거의 맞는 것 같은데요

말씀하신 이 내용이 조금 이상한 것 같습니다. 

"아직 화면속에 나타나질 않았을 시점에" -> 화면속에 생기기는 했습니다. 다만 씬뷰에서 보이지는 않는 것입니다. 

2:25초에서 자세히 보시면  운석이 화면에 나오기는 했습니다. 그런데 씬뷰와 게임뷰에서 보이지 않았을때 파괴가 되는 경우입니다. 이때는 OnbecameInvisible 이 실행되지 않습니다. 

화면에 나오지 않은 상태에서 파괴되기에 이게 실행되지 않는다고 생각하면 유니티가 이걸 만든의도를 생각해보았을때 논리적으로는 문제가 없지만 저희는 파괴되었을 경우에 이것을 처리해야 합니다. 

그래서 DestroyGameObject 라는 함수를 직접 만들어서 처리하는 것입니다. 

그리고 말씀하신대로 함수 안의 내용이 실행되지 않으니 카운터도 동작하지 않습니다. 

이해가 되셨을까요?

감사합니다. 좋은 하루 되세요