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

20140507
MeshCollider의 sharedMesh가 갱신이 안 될 때

오랜만에 글 쓰네요. 바빠서 자주 와서 보질 못 했습니다 ;ㅁ;

MeshCollider의 sharedMesh(mesh 아님. 이건 deprecated)를 갱신(새 mesh로 교체가 아니라 mesh 데이터만 수정) 할 일이 있어서 수정하는데 잘 보면 이게 전혀 갱신이 안 되는 걸 볼 수 있습니다. collider가 갱신되면 그때 같이 갱신되지요.

이유는 모르겠으나(검색해봐도 다들 정확한 이유는 모르는 것 같네요. 최적화 때문인 것 같다고 추측만) mesh 데이터를 수정하면 바로 갱신이 되지 않습니다. 그냥 가만히 있죠. 이걸 2였나 3버전부터 본 것 같은데 갱신 함수가 추가되거나 갱신 방법이 생기는 것도 아니고 아직도 이러고 있네요.

잊고 있다가 테스트하는데 뭐가 안 돼서 보니 이 문제네요. 해결(?) 방법이라고 해야 되나 여하튼 이걸 갱신하게 하려면

meshCollider.enabled = !meshCollider.enabled;
meshCollider.enabled = !meshCollider.enabled;

이렇게 의미 없이 collider를 껐다가 켜거나; (일부러 더 의미 없어 보이게 이렇게 씀)

meshCollider.sharedMesh = null; 
meshCollider.sharedMesh = mesh;

sharedMesh에 null값을 넣고 다시 되돌려놓으면 갱신이 됩니다. 네, 뭔가 이거나 저거나 의미 없어 보이긴 하는데 됩니다; (대체 왜?!)

보통은 충돌용 mesh 자체를 수정할 일이 없어서 갱신 자체를 염두를 안 해둔 것 같기도 하네요.

문제도 좀 이상하지만, 해결 방법도 이상하고 이걸 하려고 하는 저도 이상하고 아 다 이상해. 이게 뭐야 몰라 무서워.

댓글 남기기 | 타닥타닥

댓글 남기기

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