【Unity】IBeginDragHandler、IDragHandler 和 IEndDragHandler 介紹

IBeginDragHandler、IDragHandler 和 IEndDragHandler 介紹
IBeginDragHandler、IDragHandler 和 IEndDragHandler 是 Unity 引擎中的三個接口,用于處理 UI 元素的拖放事件。這些接口通常結合使用,構成了 Unity 引擎的拖放事件系統。

IBeginDragHandler 用于處理開始拖動 UI 元素時的事件。
IDragHandler 用于處理 UI 元素被拖動時的事件。
IEndDragHandler 用于處理結束拖動 UI 元素時的事件。

在使用這些接口時,開發人員需要自己實現接口中的方法,并編寫自己的邏輯來處理拖放事件。

IBeginDragHandler
方法
void OnBeginDrag(PointerEventData eventData)

eventData:拖動事件的數據。
舉例子
例子 1:記錄拖動開始時元素的位置

using UnityEngine;
using UnityEngine.EventSystems;public class DragHandler : MonoBehaviour, IBeginDragHandler
{private Vector3 startPosition;public void OnBeginDrag(PointerEventData eventData){startPosition = transform.position;}
}


在這個例子中,當開始拖動元素時,記錄元素的初始位置。PointerEventData 參數包含了拖動事件的相關數據,例如鼠標的位置、拖動的元素等。

例子 2:在拖動開始時顯示一個輔助的拖動對象

using UnityEngine;
using UnityEngine.EventSystems;public class DragHandler : MonoBehaviour, IBeginDragHandler
{public GameObject dragObjectPrefab;private GameObject dragObject;public void OnBeginDrag(PointerEventData eventData){dragObject = Instantiate(dragObjectPrefab);dragObject.transform.position = eventData.position;}
}


在這個例子中,當開始拖動元素時,實例化一個輔助的拖動對象,并將其位置設置為鼠標的位置。這個輔助對象可以用于顯示一個拖動的副本或者用于在拖動時顯示一些提示信息。

IDragHandler
方法
void OnDrag(PointerEventData eventData)

eventData:拖動事件的數據。
舉例子
例子 1:移動元素的位置

using UnityEngine;
using UnityEngine.EventSystems;public class DragHandler : MonoBehaviour, IDragHandler
{public void OnDrag(PointerEventData eventData){transform.position = eventData.position;}
}


在這個例子中,當元素被拖動時,將元素的位置設置為鼠標的位置。這樣,拖動元素時就可以實現元素的移動。

例子 2:限制元素的移動范圍

using UnityEngine;
using UnityEngine.EventSystems;public class DragHandler : MonoBehaviour, IDragHandler
{public Vector2 minPosition;public Vector2 maxPosition;public void OnDrag(PointerEventData eventData){Vector2 newPosition = eventData.position;newPosition.x = Mathf.Clamp(newPosition.x, minPosition.x, maxPosition.x);newPosition.y = Mathf.Clamp(newPosition.y, minPosition.y, maxPosition.y);transform.position = newPosition;}
}


在這個例子中,當元素被拖動時,根據設置的最小和最大位置限制元素的移動范圍。這樣,拖動元素時就可以實現元素在限定范圍內的移動。

IEndDragHandler
方法
void OnEndDrag(PointerEventData eventData)

eventData:拖動事件的數據。
舉例子
例子 1:記錄拖動結束時元素的位置

using UnityEngine;
using UnityEngine.EventSystems;public class DragHandler : MonoBehaviour, IEndDragHandler
{private Vector3 endPosition;public void OnEndDrag(PointerEventData eventData){endPosition = transform.position;}
}


在這個例子中,當元素拖動結束時,記錄元素的位置。這個位置可以用于后續的處理,例如判斷元素是否放置在了指定的位置上。

例子 2:拖動結束時銷毀輔助的拖動對象

using UnityEngine;
using UnityEngine.EventSystems;public class DragHandler : MonoBehaviour, IEndDragHandler
{private GameObject dragObject;public void OnEndDrag(PointerEventData eventData){Destroy(dragObject);}
}


在這個例子中,當元素拖動結束時,銷毀之前創建的輔助的拖動對象。這樣可以在拖動結束后清理一些臨時的對象或者狀態。
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165588.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165588.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165588.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java--權限修飾符

1.什么是權限修飾符 就是是用來限制類中的成員(成員變量、成員方法、構造器、代碼塊...)能夠被訪問的范圍。 2.權限修飾符有幾種&#xff1f;各自的作用是什么&#xff1f; private<缺省<protected<public(范圍由小到大)

什么年代了,還不會 CI/CD 么?

目錄 什么是 CI/CD&#xff1f; CI/CD 對業務有哪些好處&#xff1f; 一&#xff1a;確保卓越的代碼質量 二&#xff1a;更快的發布速度 → 更快的交付 三&#xff1a;自動化降低成本 四&#xff1a;故障隔離 五&#xff1a;簡化回滾 六&#xff1a;持續反饋 七&#…

設計模式——行為型模式(二)

6.8 迭代器模式 6.8.1 概述 定義:提供一個對象來順序訪問聚合對象中的一系列數據,而不暴露聚合對象的內部表示。 6.8.2 結構 迭代器模式主要包含以下角色: 抽象聚合(Aggregate)角色:定義存儲、添加、刪除聚合元素以及創建迭代器對象的接口。具體聚合(ConcreteAggreg…

C# Onnx PP-Vehicle 車輛分析(包含:車輛檢測,識別車型和車輛顏色)

目錄 效果 模型信息 mot_ppyoloe_s_36e_ppvehicle.onnx vehicle_attribute_model.onnx 項目 代碼 下載 其他 C# Onnx PP-Vehicle 車輛分析&#xff08;包含&#xff1a;車輛檢測&#xff0c;識別車型和車輛顏色&#xff09; 效果 模型信息 mot_ppyoloe_s_36e_ppvehi…

009 OpenCV 二值化 threshold

一、環境 本文使用環境為&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、二值化算法 2.1、概述 在機器視覺應用中&#xff0c;OpenCV的二值化函數threshold具有不可忽視的作用。主要的功能是將一幅灰度圖進行二值化處理&#xff0c;以此大幅降低圖像的數…

ASP.NET Core 啟用CORS

瀏覽器的安全阻止一個域的本地頁面請求另外不同域的本地頁面&#xff0c;這個限制叫同源策略&#xff0c;這個安全特性用來阻止惡意站點從別的網站讀取數據 例如假如我有一個頁面叫A.html https://foo.example/A.html 現在頁面A.html有一個ajax代碼嘗試讀取B.html的HTML的源…

【PyQt】(自定義類)陰影遮罩

寫了一個感覺有些用的小玩具。 用于給控件添加陰影遮罩(強調主控件的同時屏蔽其余控件的點擊) 自定義陰影遮罩Mask&#xff1a; from PyQt5.QtCore import QPoint,QRect,Qt,QPoint,QSize from PyQt5.QtWidgets import QWidget,QLabel,QPushButton,QVBoxLayout from PyQt5.QtGu…

leetcode:合并兩個有序鏈表

題目描述 題目鏈接&#xff1a;21. 合并兩個有序鏈表 - 力扣&#xff08;LeetCode&#xff09; 題目分析 這個算法思路很簡單&#xff1a;就是直接找小尾插 定義一個tail和head&#xff0c;對比兩個鏈表結點的val&#xff0c;小的尾插到tail->next&#xff0c;如果一個鏈表…

每日一題:LeetCode-589.N叉樹的前序遍歷序列構造二叉樹

每日一題系列&#xff08;day 01&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

企業微信身份驗證

本篇主要是在上一篇獲取第三方憑證基礎上&#xff0c;用戶通過三方網站自定義授權登錄后獲取用戶信息&#xff0c;以實現用戶綁定登錄功能。 構造第三方應用授權鏈接 如果第三方應用需要在打開的網頁里面攜帶用戶的身份信息&#xff0c; 第一步需要構造如下的鏈接來獲取授權c…

馬養殖場建設VR模擬實訓教學平臺具有靈活性和復用性

為保障養殖場生物安全&#xff0c;避免疫病傳播&#xff0c;學生出入養殖場受時間和地域的限制&#xff0c; 生產實習多以參觀為主&#xff0c;通過畜牧企業技術人員的講解&#xff0c;學生被動了解生產過程。為了解決畜牧養殖實訓難的問題&#xff0c;借助VR技術開展畜牧養殖虛…

通過云服務器部署JavaWeb項目

文章目錄 搭建Java運行環境部署項目更改部分項目代碼打包項目把war包上傳到webapps目錄下驗證程序 搭建Java運行環境 搭建環境的部分比較復雜&#xff0c;為了讓大家的思路更加清晰特別總結為一篇博客點擊查看 部署項目 更改部分項目代碼 打包項目 把war包上傳到webapps目錄…

大洋鉆探系列之三IODP 342航次是干什么的?(下)

上文簡要地介紹IODP342航次的總體情況&#xff0c;本文以航次1個鉆孔&#xff08;U1403&#xff09;為例&#xff0c;更為詳細地系統展示大洋鉆探航次的工作和成果。 ?編輯? 站位疊加多波束影像的成果圖見下圖&#xff0c;從圖中的顏色效果可以看出&#xff0c;此多波束的成…

歸并排序算法

文章目錄 歸并排序一、歸并排序思路二、歸并排序算法模板三、題目代碼 歸并排序 一、歸并排序思路 二、歸并排序算法模板 void merge_sort(int q[], int l, int r) {if (l > r) return;int mid l r >> 1;//中間值merge_sort(q, l, mid);merge_sort(q, mid 1, r);…

大數據分析與應用實驗任務九

大數據分析與應用實驗任務九 實驗目的 進一步熟悉pyspark程序運行方式&#xff1b; 熟練掌握pysaprkRDD基本操作相關的方法、函數&#xff0c;解決基本問題。 實驗任務 進入pyspark實驗環境&#xff0c;打開命令行窗口&#xff0c;輸入pyspark&#xff0c;完成下列任務&am…

Redis入門教程

1. 什么是NoSql NoSQL一詞最早出現于1998年&#xff0c;是Carlo Strozzi開發的一個輕量、開源、不提供SQL功能的關系數據庫。2009年&#xff0c;Last.fm的Johan Oskarsson發起了一次關于分布式開源數據庫的討論&#xff0c;來自Rackspace的Eric Evans再次提出了NoSQL的概念&am…

onnx導出報錯 | IndexError: index_select(): Index is supposed to be a vector

解決方案&#xff1a; 在torch.onnx.export鐘添加do_constant_foldingFalse&#xff0c;如下 torch.onnx.export(model,(None, text),text_fp32_onnx_path,input_names[text],output_names[unnorm_text_features],export_paramsTrue,opset_version13,verboseTrue,do_constant_…

編程參考 - C++ Code Review: 一個計算器的項目

GitHub - jroelofs/calc: Toy Calculator Toy Calculator 1&#xff0c;拿到一個project&#xff0c;第一眼看&#xff0c;沒有配置文件&#xff0c;說明沒有引入持續集成系統&#xff0c;continuous integration system。 2&#xff0c;然后看cmake文件&#xff0c;使用的子…

使用Python的turtle模塊繪制鋼鐵俠圖案

1.1引言&#xff1a; 在Python中&#xff0c;turtle模塊是一個非常有趣且強大的工具&#xff0c;它允許我們以一個可視化和互動的方式學習編程。在本博客中&#xff0c;我們將使用turtle模塊來繪制鋼鐵俠的圖案。通過調用各種命令&#xff0c;我們可以引導turtle繪制出指定的圖…