2012-11-25 5 views
1

저는 UIToolkit으로 놀아 왔습니다. 정말 멋지 네요. 내 클릭이 버튼을 통과하지만 UI를 클릭하면 내 레이 캐스트도 시작됩니다. 클릭/터치가 GUI에 있는지 확인하는 방법이 있습니까?UIToolkit 버튼을 사용하지 마십시오.

편집 :

foreach (var touchable in _gui.touchableSprites) { 
    if (!touchable.hidden && touchable.hitTest(new Vector2(clickPos.x, Screen.height - clickPos.y))) return; 
} 

감사 : 나는 Prime31의 UIToolkit 해결

을 사용하고 있습니다.

+0

현대에서 당신은 단지 이것을 할 수 있습니다 http://answers.unity3d.com/questions/784617/how-do-i-block-touch-events-from-propagating-throu.html – Fattie

답변

2

prime31의 UIToolkit을 사용한다고 가정하면 the UIToolkit.cs(lines 81-95) ) script을 봅니다. 저자는 TouchableSprites 강조 표시를 처리하는 방법을 보여주는 예를 사용합니다. MouseOver 이벤트를 수행하는 것과 동일한 기능 can be adapted. 저자가 2011 년부터이 기능을 추가했는지 모르겠다. 잠시 후에 UIToolkit을 사용하지 않았다.

또는 첫 번째 레이어가 "UILayer"(UIToolkit의 레이어)이면 반환하도록 모든 광선 추적을 수정할 수 있습니다.

내가 사용하는 세 번째 방법은 모든 GUI rect 목록을 저장하는 전역 GUI 요소 관리자를 만드는 것입니다. 새로운 광선 추적 함수를 추가 할 때 관리자 클래스를 호출하여 마우스 커서가 GUI rect에 포함되어 있는지 확인합니다 (겹쳐진 rect를 병합하는 좀 더 정교함). 그렇다면 광선 추적을 건너 뜁니다.

+1

감사합니다. 나 옳은 방향으로! 나는 똑같은 것을 찾고있는 다른 누군가를 위해 나의 메인 포스트에 정확한 코드를 추가했다. –

관련 문제