unity 針對UI的射線穿透的兩種方式



在做背包物品的拖動,以及技能快捷鍵的拖動設置時,都涉及到了針對UI的射線穿透問題.在處理這兩個應用場景時,我采用了不同的UI射線穿透方式.

方法一

主要是用到了 IsRaycastLocationValid(Vector2 sp, Camera eventCamera) 這個函數.具體的介紹請移步官網.

一句話介紹它的主要功能,是用來設置當前腳本所對應的UI是否被射線檢測. 因為我針對背包物品拖動所寫的腳本是綁定在物品自身的,所以這個函數就很適用啦.

當然,它的主要應用場景不是這個.最常見的是針對不規則圖片,以及疊加的圖片.下面有兩個博文介紹:
針對疊加圖片
針對不規則圖形

方法二

當你想要拖動的UI圖形不是當前腳本所綁定的物體時,該怎么辦? 除了重寫腳本之外,我們還可以使用 CanvasGroup 組件來控制射線穿透.CanvasGroup 的具體介紹也請移步官網.

CanvasGroup 下的 Block Raycasts 可以用來控制組件對應物體的所有子物體是否被射線穿透.當然,因為它的威力太大,所以最好是用一個不帶任何子物體的空物體管理,需要時我們再把UI綁定到該空物體上.

反思

以上是我在學習過程中總結的一點經驗.學得越深入,越發現其實所有的問題都是很簡單的.比如以上的應用場景,說白了就是針對射線穿透的控制.如果能對API很熟悉,甚至對原理也十分了解,那么解決這種問題就不在話下了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM