理論上,只要一個按鈕自己這一層或者子節點有一個控件勾選了RaycastTarget,並且按鈕為Interactable的.並且不被其他可以點擊的控件阻擋,那么這個按鈕就可以被點擊
在調一個界面時發現一個詭異的問題,有個按鈕死活無法點擊,EventSystem無法檢測到.旁邊的一個按鈕卻是ok的
對比了下,發現兩者的區別是:
可點擊的 x軸旋轉-180
不可點擊 無旋轉
將不可點擊的旋轉-180,發現可以點擊了
排查父節點,發現父節點掛了個Image為了做表現,旋轉了180.
既然確定問題是旋轉導致的,google了一下,發現了帖子:
https://forum.unity.com/threads/button-with-rotation-y-180-can-not-click.293482/
確認UGUI無法接受反向按鈕的點擊.
在和同事討論時,同事提醒,有個開關是否接受反轉的點擊,即 Graphic Raycaster 的 Ignore Reversed Graphics這個選項
當然這個選項默認是勾選的,不接受反向點擊,為點擊時檢測的性能考慮.
所以這種情況下,還是要靠做界面時留心下旋轉.不建議關閉這個開關
后面試了下,哪怕把這個勾關掉,如果我旋轉90度自然也是無法接受點擊的
看了下相關源碼,是按這個Gameobject的Vector3.forward去算的.所以還是要小心
當然可以考慮寫一個腳本,檢測這種forward是不是面向屏幕的,並校正
一般來說,沒有可點擊的物體是背對屏幕或者是90度旋轉的吧.