Unity3D研究院之將UI的點擊事件滲透下去(轉)
阿新 • • 發佈:2017-06-25
一個 響應 http void ons cti ive down point
轉自 http://www.xuanyusong.com/archives/4241
處理UI還有3D模型的點擊推薦使用UGUI的這套事件系統,因為使用起來比較簡潔,不需要自己用代碼來發送射線,並且可以很好的處理同時點擊UI和3D模型上。
1.給3D攝像機掛一個Physics Raycaster組件。Event Mask過濾掉UI.
2.用unity自帶的Event Trigger 或者 http://www.xuanyusong.com/archives/3325 就可以對UI 或者 3D模型進行點擊事件的監聽了
3.OK 當UI與模型相互疊加的時候,優先響應UI,並且響應最前面的UI.
4.如下圖所示,前面是UI後面是3D模型,被擋住的模型或者UI是不會被響應的。
假如想把點擊的事件透下去,讓所有的UI或者模型都能正確的響應事件,怎麽辦呢?
代碼: 把這段腳本掛在最前面的UI上。 然後當接收到點擊事件後,調用PassEvent把當前的事件透下去。由於UGUI的事件有很多種,比如點擊 、擡起、拖動、落下、第二個參數就是ExecuteEvents.Handler 把對應的Handler傳進去就行了。
C#1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using System.Collections.Generic;
public class Test : MonoBehaviour,IPointerClickHandler ,IPointerDownHandler,IPointerUpHandler
{
//監聽按下
public void OnPointerDown(PointerEventData eventData) |
這樣UI下面那些對應接收點擊事件的地方都可以響應到了。。如下圖所示,我點擊在前面的UI後面的消息也能響應到了。
Unity3D研究院之將UI的點擊事件滲透下去(轉)