기본 콘텐츠로 건너뛰기

NGUI - UIMessage 내에서 GameObject 제거 시 해결 방법

NGUI - UIMessage 내에서 GameObject 제거 시에 아래 Error 메시지가 발생합니다.

"Destroying GameObjects immediately is not permitted during physics trigger/contact or animation event callbacks. You must use Destroy instead."

UIMessage도 물리 이벤트를 받아서 처리하는 된다.
이말은 물리 시뮬레이션 중이라는 것이다.
Destroy()로 삭제하면 문제가 되지 않지만, NGUI에서는 DestroyImmediate()를 사용한다.

해서 다른 방법을 사용하여야 합니다.
해결 방법을 몇가지 정리해봅니다.

  • Destroy()로 물리 시뮬레이션 이외 시간에서 제거합니다.
  • Coroutine를 사용합니다.

댓글

이 블로그의 인기 게시물

Direct3D11 - Intrinsic Functions 내장 함수

Intrinsic Functions 내장 함수 다음은 HLSL이 기본 제공하는 함수들과 관련 설명들입니다. 우선 HLSL 5.0(D3D11)에서 추가된 함수들입니다. 이 함수들에 대한 자료는 아직 매우 빈약한 편이어서 차츰 업데이트하는 방식을 택하겠습니다. 또, 새로 도입이 되긴 했지만 Vetex/Pixel/Geometry shader 어디에서도 아직 사용할 수 없는 함수들도 있습니다. 이런 함수들 역시 사용가능하게 되고 참고할 수 있을 때 업데이트하는 방식을 취할까 합니다. 1. AllMemoryBarrier()     모든 메모리 Access가 끝날 때까지그룹 내의 모든 쓰레드들의 실행을 막는다. 2. AllMemoryBarrierWithGroupSync()     모든 메모리 Access가 끝나고 모든 쓰레드들이 이 함수 지점까지 도달할    때까지그룹 내의 모든 쓰레드들의 실행을 막는다. 3. DeviceMemoryBarrier()    모든 디바이스 메모리 Access가 끝날 때까지그룹 내의 모든 쓰레드들의 실행을 막는다. 4. DeviceMemoryBarrierWithGroupSync()    모든 디바이스 메모리 Access가 끝나고 모든 쓰레드들이 이 함수 지점까지 도달할    때까지그룹 내의 모든 쓰레드들의 실행을 막는다. 5. GroupMemoryBarrier    그룹 메모리 Access가 끝날 때까지그룹 내의 모든 쓰레드들의 실행을 막는다. 6. GroupMemoryBarrierWithGroupSync     모든 그룹 메모리 Access가 끝나고 모든 쓰레드들이 이 함수 지점까지 도달할    때까지그룹 내의 모든 쓰레드들의 실행을 막는다. 7. dst:   두 벡터 간의 거리(distance)를 구한다.    fVector dst(      __in  fVector src0,      __in  fVector src1    ); 8. EvaluateAttributeAtCentro

WebRTC Janus Gateway Media Server 사용기

이번 프로젝트에 WebRTC Media Server가 필요해서 조사를 진행했다. 조사한 Media Server는 아래와 같다. 1. jitsi meet : https://jitsi.org/jitsi-meet/ 2. janus gateway : https://janus.conf.meetecho.com/ 3. kurento : https://www.kurento.org/ 4. mediasoup : https://mediasoup.org/ 5. medooze : http://www.medooze.com/ 이중에 여러 플랫폼 라이브러리가 필요해서 janus gateway 를 선택하게 되었다.