1. 程式人生 > >關於UGUI不攔截射線的方法

關於UGUI不攔截射線的方法

cat cast mark 希望 ext alt text CA ntc

起因:開發遊戲,要在設置界面裏給一個設置項添加一個東西解釋這個項是幹啥的,要求鼠標移到文字上的時候顯示一個彈窗差不多的東西,見動圖,鼠標移開會消失。但是當我移動鼠標到彈窗上的時候,UGUI會發射一根射線,擊到彈窗上而不是文字上,判定為離開文字,於是隱藏彈窗,然後判斷進入文字,顯示彈窗,如此反復,不是我所希望的。。如果這個彈窗不會遮擋射線就不會出現這個問題。

技術分享圖片

解決方法有兩個,一個是寫代碼,如下:

1 bool ICanvasRaycastFilter.IsRaycastLocationValid(Vector2 sp, Camera eventCamera)
2 {
3     return
false; 4 }

實現 ICanvasRaycasttFilter 接口,返回 false 則這個物體將不會被射線擊中

還有有個方法是給這個物體加一個組件 :CanvasGroup

技術分享圖片

關閉 Interactable 和 Blocks Raycasts 則他會讓他和他的子物體全部都不接收射線

Ignore ParentGroups 勾選的話,他會無視父物體的 CanvasGroup 的設置。

結果如圖

技術分享圖片

關於UGUI不攔截射線的方法