2012-11-25 68 views
1

我一直在玩UIToolkit,它很棒。雖然我的點擊通過按鈕,所以當點擊UI時,我的光線投射也會開始。有沒有辦法檢查點擊/觸摸是否在GUI上?不通過UIToolkit按鈕

編輯:我使用Prime31的UIToolkit

解決:

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

感謝。

+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元素管理器,該管理器存儲所有GUI反應的列表。當我添加一個新的光線跟蹤函數時,我會調用我的管理器類來查看鼠標光標是否包含在任何GUI矩形中(有更復雜的合併重疊矩形),如果是,則會跳過光線軌跡。

+1

謝謝,這推我在正確的方向!我將精確的代碼添加到我的主要帖子中,供其他正在尋找相同內容的人使用。 –