DeepSeek教unity------UI元素長按響應

?

主要功能說明:

  1. ?長按檢測:通過記錄指針按下的時間,判斷是否達到?longClickTime,從而觸發長按事件。
  2. ?狀態管理:使用?StateEnum?枚舉管理點擊項的當前狀態(未按下、按下等待長按、長按已觸發)。
  3. ?事件回調:通過實現?IPointerDownHandlerIPointerUpHandler?和?ICancelHandler?接口,處理 Unity UI 的指針事件。
  4. ?監聽器事件:用于定義長按事件的監聽器,外部類可以注冊事件以處理長按邏輯。

使用場景:

  • 適用于需要檢測長按操作的 UI 元素,例如長按刪除、長按編輯等交互場景。
/****************************************************文件:LongClickable.cs作者:Edision日期:#CreateTime#功能:長按
*****************************************************/
using UnityEngine;
using UnityEngine.UI;
using System;
using UnityEngine.EventSystems;/// <summary>
/// 用于將“長按點擊”事件委托給事件監聽器
/// 需要一個可點擊的圖形組件(可以是透明度為零的圖像)以接收 OnPointerDown、OnPointerUp 等事件。
/// 其他 UI 元素不應覆蓋此組件,以確保能夠接收指針回調。
/// </summary>
[RequireComponent(typeof(Graphic))]
public class LongClickable : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{public float longClickTime = .7f; // 用戶需要按住點擊的時間(秒)以觸發長按事件public event Action<LongClickable> OnLongClick; // 定義長按事件public StateEnum State { get { return _State; } } // 當前點擊項的狀態float _PressedTime; // 指針按下時的時間StateEnum _State; // 當前點擊項的狀態/// <summary>/// 枚舉表示點擊項的不同狀態/// </summary>public enum StateEnum{NOT_PRESSING, // 未按下PRESSING_WAITING_FOR_LONG_CLICK, // 按下,等待是否觸發長按PRESSING_AFTER_LONG_CLICK // 按下,長按已觸發}/// <summary>/// 每幀調用,用于檢查是否達到長按時間/// </summary>void Update(){if (_State == StateEnum.PRESSING_WAITING_FOR_LONG_CLICK){// 檢查自指針按下以來的時間是否超過長按時間if (Time.unscaledTime - _PressedTime >= longClickTime){_State = StateEnum.PRESSING_AFTER_LONG_CLICK; // 更新狀態以指示長按已觸發OnLongClick?.Invoke(this); // 觸發長按事件}}}#region Unity UI 事件處理回調/// <summary>/// 當指針按下時調用/// </summary>/// <param name="eventData">與指針事件相關的數據</param>public void OnPointerDown(PointerEventData eventData){if (eventData.button != PointerEventData.InputButton.Left) // 確保僅處理左鍵點擊return;_State = StateEnum.PRESSING_WAITING_FOR_LONG_CLICK; // 更新狀態以指示項被按下_PressedTime = Time.unscaledTime; // 記錄指針按下的時間}/// <summary>/// 當指針松開時調用/// </summary>/// <param name="eventData">與指針事件相關的數據</param>public void OnPointerUp(PointerEventData eventData){if (eventData.button != PointerEventData.InputButton.Left) // 確保僅處理左鍵松開return;_State = StateEnum.NOT_PRESSING; // 更新狀態以指示項未被按下}#endregion
}
/****************************************************文件:LongClickableItem.cs作者:Edision日期:#CreateTime#功能:UI 元素
*****************************************************/
using UnityEngine;[RequireComponent(typeof(LongClickable))]
public class LongClickableItem : MonoBehaviour
{private void Awake(){LongClickable item = GetComponent<LongClickable>();item.OnLongClick += HandleLongClick;}void HandleLongClick(LongClickable clickedItem){Debug.Log("長按事件觸發!");}
}

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

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

相關文章

【北京迅為】itop-3568 開發板openharmony鴻蒙燒寫及測試-第2章OpenHarmony v3.2-Beta4版本測試

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工藝&#xff0c;搭載一顆四核Cortex-A55處理器和Mali G52 2EE 圖形處理器。RK3568 支持4K 解碼和 1080P 編碼&#xff0c;支持SATA/PCIE/USB3.0 外圍接口。RK3568內置獨立NPU&#xff0c;可用于輕量級人工…

stm32hal庫尋跡+藍牙智能車(STM32F103C8T6)

簡介: 這個小車的芯片是STM32F103C8T6&#xff0c;其他的芯片也可以照貓畫虎,基本配置差不多,要注意的就是,管腳復用,管腳的特殊功能,(這點不用擔心,hal庫每個管腳的功能都會給你羅列,很方便的.)由于我做的比較簡單,只是用到了幾個簡單外設.主要是由帶霍爾編碼器電機的車模,電機…

SQL命令詳解之操作數據庫

操作數據庫 SQL是用于管理和操作關系型數據庫的標準語言。數據庫操作是SQL的核心功能之一&#xff0c;主要用于創建、修改和刪除數據庫對象&#xff0c;如數據庫、表、視圖和索引等。以下是SQL中常見的數據庫操作命令及其功能簡介&#xff1a; 1. 查詢數據庫 查詢所有的數據庫…

Go紅隊開發—編解碼工具

文章目錄 開啟一個項目編解碼工具開發Dongle包Base64編解碼摩斯密碼URL加解密AES加解密 MD5碰撞工具開發 開啟一個項目 這作為補充內容&#xff0c;可忽略直接看下面的編解碼&#xff1a; 一開始用就按照下面的步驟即可 1.創建一個文件夾&#xff0c;你自己定義名字(建議只用…

Starrocks入門(二)

1、背景&#xff1a;考慮到Starrocks入門這篇文章&#xff0c;安裝的是3.0.1版本的SR&#xff0c;參考&#xff1a;Starrocks入門-CSDN博客 但是官網的文檔&#xff0c;沒有對應3.0.x版本的資料&#xff0c;卻有3.2或者3.3或者3.4或者3.1或者2.5版本的資料&#xff0c;不要用較…

工程化與框架系列(10)--微前端架構

微前端架構 &#x1f3d7;? 微前端是一種將前端應用分解成更小、更易管理的獨立部分的架構模式。本文將詳細介紹微前端的核心概念、實現方案和最佳實踐。 微前端概述 &#x1f31f; &#x1f4a1; 小知識&#xff1a;微前端的核心理念是將前端應用分解成一系列獨立部署、松耦…

SwiftUI之狀態管理全解析

文章目錄 引言一、`@State`1.1 基本概念1.2 初始化與默認值1.3 注意事項二、`@Binding`2.1 基本概念2.2 初始化與使用2.3 注意事項三、`@ObservedObject`3.1 基本概念3.2 初始化與使用3.3 注意事項四、`@EnvironmentObject`4.1 基本概念4.2 初始化與使用4.3 注意事項五、`@Stat…

Redis 高可用性:如何讓你的緩存一直在線,穩定運行?

&#x1f3af; 引言&#xff1a;Redis的高可用性為啥這么重要&#xff1f; 在現代高可用系統中&#xff0c;Redis 是一款不可或缺的分布式緩存與數據庫系統。無論是提升訪問速度&#xff0c;還是實現數據的高效持久化&#xff0c;Redis 都能輕松搞定。可是&#xff0c;當你把 …

面試題:說一下你對DDD的了解?

面試題:說一下你對DDD的了解? 在面試中,關于 DDD(領域驅動設計,Domain-Driven Design) 的問題是一個常見的技術考察點。DDD 是一種軟件設計方法論,旨在通過深入理解業務領域來構建復雜的軟件系統。以下是一個清晰、詳細的回答模板,幫助你在面試中脫穎而出: DDD 的定義…

Redis---緩存穿透,雪崩,擊穿

文章目錄 緩存穿透什么是緩存穿透&#xff1f;緩存穿透情況的處理流程是怎樣的&#xff1f;緩存穿透的解決辦法緩存無效 key布隆過濾器 緩存雪崩什么是緩存雪崩&#xff1f;緩存雪崩的解決辦法 緩存擊穿什么是緩存擊穿&#xff1f;緩存擊穿的解決辦法 區別對比 在如今的開發中&…

Android Logcat 高效調試指南

工具概覽 Logcat 是 Android SDK 提供的命令行日志工具&#xff0c;支持靈活過濾、格式定制和實時監控&#xff0c;官方文檔詳見 Android Developer。 基礎用法 命令格式 [adb] logcat [<option>] ... [<filter-spec>] ... 執行方式 直接調用&#xff08;通過ADB守…

【定昌Linux系統】部署了java程序,設置開啟啟動

將代碼上傳到相應的目錄&#xff0c;并且配置了一個.sh的啟動腳本文件 文件內容&#xff1a; #!/bin/bash# 指定JAR文件的路徑&#xff08;如果JAR文件在當前目錄&#xff0c;可以直接使用文件名&#xff09; JAR_FILE"/usr/local/java/xs_luruan_client/lib/xs_luruan_…

Java 8 中,可以使用 Stream API 和 Comparator 對 List 按照元素對象的時間字段進行倒序排序

文章目錄 引言I 示例對象II List 按時間字段倒序排序: 使用 `Stream` 和 `Comparator` 排序方法 1:使用 `Comparator.comparing`方法 2:使用 `Comparator.reversed`方法 3:自定義 `Comparator`輸出結果III 注意事項**時間字段類型**:**空值處理**:IV 總結引言 案例:在線用…

jvm內存模型,類加載機制,GC算法,垃圾回收器,jvm線上調優等常見的面試題及答案

JVM內存模型 JVM內存模型包括哪些區域 答案&#xff1a;JVM內存模型主要包括以下區域&#xff1a; 程序計數器&#xff1a;是一塊較小的內存空間&#xff0c;它可以看作是當前線程所執行的字節碼的行號指示器&#xff0c;用于記錄正在執行的虛擬機字節碼指令的地址。Java虛擬機…

git clone的時候出現出現error

報錯如下&#xff1a; Collecting githttps://github.com/haotian-liu/LLaVA.git Cloning https://github.com/haotian-liu/LLaVA.git to /tmp/pip-req-build-360q6tt1 Running command git clone --filterblob:none --quiet https://github.com/haotian-liu/LLaVA.git /t…

Minio搭建并在SpringBoot中使用完成用戶頭像的上傳

Minio使用搭建并上傳用戶頭像到服務器操作,學習筆記 Minio介紹 minio官網 MinIO是一個開源的分布式對象存儲服務器&#xff0c;支持S3協議并且可以在多節點上實現數據的高可用和容錯。它采用Go語言開發&#xff0c;擁有輕量級、高性能、易部署等特點&#xff0c;并且可以自由…

vue3中ref和reactive響應式數據、ref模板引用(組合式和選項式區別)、組件ref的使用

目錄 Ⅰ.ref 1.基本用法&#xff1a;ref響應式數據 2.ref模板引用 3.ref在v-for中的模板引用 ?4.ref在組件上使用 ?5.TS中ref數據標注類型 Ⅱ.reactive 1.基本用法&#xff1a;reactive響應式數據 2.TS中reactive標注類型 Ⅲ.ref和reactive的使用場景和區別 Ⅳ.小結…

javascript實現雪花飄落效果

本文實現雪花飄落效果的 JavaScript 網頁設計案例&#xff0c;代碼實現如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, init…

項目準備(flask+pyhon+MachineLearning)- 3

目錄 1.商品信息 2. 商品銷售預測 2.1 機器學習 2.2 預測功能 3. 模型評估 1.商品信息 app.route(/products) def products():"""商品分析頁面"""data load_data()# 計算當前期間和上期間current_period data[data[成交時間] > data[成…

FPGA開發,使用Deepseek V3還是R1(3):系統級與RTL級

以下都是Deepseek生成的答案 FPGA開發&#xff0c;使用Deepseek V3還是R1&#xff08;1&#xff09;&#xff1a;應用場景 FPGA開發&#xff0c;使用Deepseek V3還是R1&#xff08;2&#xff09;&#xff1a;V3和R1的區別 FPGA開發&#xff0c;使用Deepseek V3還是R1&#x…