最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Unity中UnityEngine.EventSystems 事件系統(tǒng) 鼠標(biāo)互動(dòng)接口 IPointer系列簡(jiǎn)介(1)

2022-08-22 00:43 作者:白白_可樂(lè)  | 我要投稿


今天和大家分享位于UnityEngine.EventSystems 的一系列接口,功能包括鼠標(biāo)點(diǎn)擊,鼠標(biāo)按下與松開,鼠標(biāo)拖動(dòng)等.

這一系列的接口默認(rèn)只能作用在開啟了 Raycast Target (默認(rèn)開啟)的 UI 元素身上,

開啟射線檢測(cè)的UI元素(以Image為例)

當(dāng)然,既然是射線檢測(cè),那么只要目標(biāo)物體有碰撞體,那么就有辦法啟用這個(gè)接口,只需在相機(jī)上添加 Physics Raycaster 或者 Physics 2D Raycaster 組件即可.2D和3D并不通用,但可共用.

相機(jī)添加射線檢測(cè)組件

以上是接口前期準(zhǔn)備,接下來(lái)開始正式介紹:

IPointerDownHandler 接口,可響應(yīng)鼠標(biāo)在自身碰撞體范圍內(nèi)按下事件

需要實(shí)現(xiàn) void OnPointerDown(PointerEventData eventData) 方法.


IPointerUpHandler 接口,可響應(yīng)鼠標(biāo)在自身碰撞體范圍內(nèi)松開事件

需要實(shí)現(xiàn)?void OnPointerUp(PointerEventData eventData) 方法.


IPointerClickHandler?接口,可響應(yīng)鼠標(biāo)在自身碰撞體范圍內(nèi)點(diǎn)擊事件,什么叫點(diǎn)擊呢,就是你在碰撞體范圍內(nèi)按下了,然后又在范圍內(nèi)松開了,這中間是可以移動(dòng)的,哪怕你移出范圍了,只要你松開的時(shí)候回來(lái)就算.

需要實(shí)現(xiàn)?void?OnPointerClick(PointerEventData eventData)?方法.


IPointerEnterHandler?接口,可響應(yīng)鼠標(biāo)進(jìn)入自身碰撞體范圍事件

需要實(shí)現(xiàn)?void?OnPointerEnter(PointerEventData eventData)?方法.


IPointerExitHandler?接口,可響應(yīng)鼠標(biāo)離開自身碰撞體范圍事件

需要實(shí)現(xiàn)?void?OnPointerExit(PointerEventData eventData)?方法.


IPointerMoveHandler?接口,可響應(yīng)鼠標(biāo)在自身碰撞體范圍內(nèi)移動(dòng)事件

需要實(shí)現(xiàn)?void?OnPointerMove(PointerEventData eventData)?方法.


IScrollHandler接口,可響應(yīng)鼠標(biāo)在自身碰撞體范圍內(nèi)滑動(dòng)滾輪事件

需要實(shí)現(xiàn)?void OnScroll(PointerEventData eventData) 方法.

上面是一個(gè)系列(算是我自己分的),接下來(lái)是拖拽相關(guān)的:

IDragHandler?接口,在事件系統(tǒng)的拖拽相關(guān)中,這是個(gè)比較關(guān)鍵的接口,雖然只

需要實(shí)現(xiàn)void OnDrag(PointerEventData eventData)方法

但是其他的幾個(gè)接口在沒(méi)有他的情況下是不完整(或者不工作的),這個(gè)方法響應(yīng)的是拖拽事件,那么所謂拖拽事件,就是鼠標(biāo)按住不放的情況下移動(dòng)了,在移動(dòng)的每一幀都會(huì)觸發(fā)拖拽事件,你按著不動(dòng)了就暫停觸發(fā),繼續(xù)動(dòng)繼續(xù)觸發(fā),松開就停止觸發(fā).

IInitializePotentialDragHandler接口,檢測(cè)當(dāng)前腳本是否實(shí)現(xiàn)了前面那個(gè)IDragHandler接口,如果腳本有IDragHandler接口的話,在你按下鼠標(biāo)之后觸發(fā)本接口(觸發(fā)時(shí)機(jī)是晚于IPointerDownHandler)

需要實(shí)現(xiàn)void OnInitializePotentialDrag(PointerEventData eventData)方法


IBeginDragHandler接口,當(dāng)拖拽開始時(shí)觸發(fā),即按下鼠標(biāo)開始移動(dòng)的時(shí)候,按著不觸發(fā),動(dòng)的那一幀觸發(fā),如果腳本沒(méi)有實(shí)現(xiàn)IDragHandler接口的話不會(huì)觸發(fā).

需要實(shí)現(xiàn)void OnBeginDrag(PointerEventData eventData) 方法.


IEndDragHandler接口,當(dāng)拖拽結(jié)束時(shí)觸發(fā),松開就是結(jié)束.

需要實(shí)現(xiàn)void?OnEndDrag(PointerEventData eventData) 方法.


IDropHandler接口,既然有拖拽,那么就自然有放置,當(dāng)你正在拖拽時(shí),如果在實(shí)現(xiàn)該接口的物體的碰撞體范圍內(nèi)松開,就會(huì)觸發(fā)該接口,觸發(fā)時(shí)機(jī)早于IEndDragHandler接口.

需要實(shí)現(xiàn)void?OnDrop(PointerEventData eventData) 方法.

接下來(lái)要介紹的是和UI行為相關(guān)的幾個(gè)接口,先看圖

Input Manager 按鈕設(shè)置

這張圖是默認(rèn)的 InputManager 的各個(gè)按鈕的設(shè)置,也包括了UI的按鈕,比如 Submit,Cancel.

如果你使用的是 InputSystem ,那么則需要在升級(jí)后的EventSystem組件中設(shè)置各個(gè)按鈕:

InputSystem 按鈕設(shè)置

接下來(lái)的幾個(gè)接口,需要?EventSystem.current.currentSelectedGameObject 不為空才會(huì)執(zhí)行.

ICancelHandler 接口,按下UI的取消鍵時(shí)觸發(fā),默認(rèn)是 ESC.

需要實(shí)現(xiàn).void OnCancel(BaseEventData eventData);

IMoveHandler 接口,按上下左右移動(dòng)至其他UI時(shí)觸發(fā).

需要實(shí)現(xiàn) void OnMove(AxisEventData eventData);

ISelectHandler 接口,被選中時(shí)觸發(fā).

需要實(shí)現(xiàn)?void OnSelect(BaseEventData eventData);

IDeselectHandler 接口,取消被選中時(shí)觸發(fā).

需要實(shí)現(xiàn)?void OnDeselect(BaseEventData eventData);

ISubmitHandler 接口,按下確認(rèn)鍵時(shí)觸發(fā),默認(rèn)是回車.

需要實(shí)現(xiàn)?void OnSubmit(BaseEventData eventData);

IUpdateSelectedHandler 接口,當(dāng)EventSystem.current.currentSelectedGameObject?不為空的時(shí)候每一幀觸發(fā).

需要實(shí)現(xiàn)?void OnUpdateSelected(BaseEventData eventData);

事件系統(tǒng)的接口就算是介紹完了,如果看的人多的話我就出個(gè)視頻具體講講.就這樣,大家下次再見.


Unity中UnityEngine.EventSystems 事件系統(tǒng) 鼠標(biāo)互動(dòng)接口 IPointer系列簡(jiǎn)介(1)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
渭源县| 侯马市| 金坛市| 新营市| 永平县| 温州市| 奉新县| 南汇区| 沈阳市| 上饶市| 铜山县| 永兴县| 镇沅| 连山| 新巴尔虎右旗| 长岛县| 句容市| 肇源县| 沙河市| 广灵县| 镶黄旗| 依兰县| 崇信县| 舟曲县| 社会| 兰坪| 金堂县| 云霄县| 宜良县| 常州市| 和龙市| 敖汉旗| 大名县| 库伦旗| 西城区| 三原县| 龙井市| 平湖市| 昭平县| 昔阳县| 工布江达县|