fetchinist blog

"눈이 나쁘면 안경을 쓴댔으니 모자란 너에겐 모자를 씌워주마" – 김케장 / 동전주머니엔 동전이 들었지

20180306
SetIsHierarchyDispatchInterested Assertion 실패 시


+2018.03.17 - 2017.3.1p3 이후로 버그 수정 되었습니다.

(977568)(968882) - Physics: Fixed disabling and enabling a collider on an inactive gameobject producing transform error messages.

 

예전에 유니티 2017.1에서 상위 버전으로 올라오면서 전에는 없던 오류가 발생해서 버전을 안 올리고 있었는데 이번에 올린 뒤에 이유가 뭔가 한참을 헤매다 원인과 해결(정확히 말하면 회피) 방법을 알게 되어 같은 오류를 접하시는 분들의 시간 단축을 위해 몇 자 적습니다. ;ㅁ;

먼저 오류 메시지를 보면 다음과 같습니다.

계층 상의 transform을 파괴하는 중에 SetIsDispatchInterested와 SetIsHierarchyDispatchInterested Assertion(표명)이 실패했으며, 시스템은 반드시 비활성 상태에서 스스로 등록 해제(취소?)해야 한다는 소리인데 내부적인 말이라서 정확히 뭘 하라는 건지는 모르겠네요.

일단 Assertion이 실패했다는 말은 참이 나와야 하는 상황에서 작성자의 의도와 다르게 거짓이 나왔다는 소리이기 때문에 내부 버그로 보입니다. 해당 버그는 2017.2 이상 버전에서부터 발생하는 것으로 보이고, 해당 메시지를 보려면 collider가 있는 gameObject를 스크립트에서 SetActive( false );를 하거나 에디터에서 직접 끈 뒤에 스크립트에서 collider의 enabled를 true로 하거나 에디터에서 (켜져 있다면 껐다가 다시) 직접 켠 뒤에 해당 gameObject를 파괴(삭제)하면 볼 수 있습니다.

gameObject의 activeSelf 참, 거짓 여부와는 상관없이 activeInHierarchy가 false인 상태에서 collider를 true로 만들고 파괴하면 오류가 발생합니다. 유니티 최신 패치 버전(2017.3.1p2)에서 해봐도 오류가 나오는 걸 보니 아직 버그 수정이 되지 않은 것 같네요. (2017.3.1p3 이후 버그 수정됨)

이를 회피하기 위해서는 collider가 켜져 있고 activeInHierarchy가 false인 gameObject가 파괴되기 전에 다음과 같이 collider를 꺼주면 됩니다.

 

참고 - https://forum.unity.com/threads/assertion-failed-transform-has-setisdispatchinterested-present-when-destroying-the-hierarchy.505111/

 

댓글이 2개 우앙 | 타닥타닥

  1. 잘 지내세죠? 외계어 같습니다. ㅠㅠ

  2. 네 별일 없이 잘 지내고 있습니다. 아 그리고 달력 잘 받았습니다 :)

    저게 로그가 전체 콜스택이여서 쓸데 없이 길어서 그렇지, 실제 필요한 건 맨 위에 한 줄 뿐입니다 ;ㅁ;

댓글 남기기

* 표시된 곳은 반드시 입력해주세요