主题
EUITouchInfo
概览
| 字段 | 值 |
|---|---|
| Kind | Data · 数据 Data |
| Realm | common |
EUITouchInfo 描述界面节点上一次触摸交互的完整过程,记录触摸开始位置 BeganPosition、触摸移动位置 MovedPosition、触摸结束位置 EndedPosition,以及用于区分不同触点的 TouchID。作者可借助它获取触点在各个阶段的坐标,从而判断拖动距离、滑动方向或多指操作。
适用场景
当界面节点需要响应手指拖动、滑动或长按等交互时,在触摸回调中读取回传的 EUITouchInfo,对比 BeganPosition 与 MovedPosition 计算位移量,并用 TouchID 区分同时存在的多个触点,常用于滚动列表、摇杆或可拖拽面板。
使用要点
该类型不能自行构造,只能在 EUINodeBase 的 OnTouchBegan、OnTouchMoved、OnTouchEnded 事件回调中接收实例。回调触发后按当前阶段读取 BeganPosition、MovedPosition 或 EndedPosition,并结合 TouchID 匹配同一次触摸的多次回调,再据此更新界面表现。
注意事项
禁止使用 EUITouchInfo.New() 或 EUITouchInfo() 直接创建实例,实例只能由触摸事件回调参数或公开 API 的返回值提供。位置类字段均为 Vector2,且只在对应的触摸阶段具有意义,跨阶段读取可能得到不期望的数值。同一次触摸在开始、移动与结束阶段共享相同 TouchID,可据此把多次回调关联为一次完整交互。
代码示例
在触摸回调中读取触点信息
lua
-- @runtime client
local players = game:GetService("Players")
local localPlayer = players.LocalPlayer
if localPlayer == nil then return end
local euiManager = localPlayer.PlayerGui.EuiManager
local rootNode = euiManager:GetRootNode()
rootNode.TouchEnabled = true
rootNode.OnTouchMoved:Once(function(touchInfo, player)
print("触点:", touchInfo.TouchID)
print("移动到:", touchInfo.MovedPosition.x, touchInfo.MovedPosition.y)
end)属性 (4)
| Name | 类型 | 默认值 | 说明 |
|---|---|---|---|
BeganPosition | Vector2 | - | 触摸开始位置,类型为 Vector2,用于描述一次触摸交互进入开始阶段时的二维坐标点。该属性属于 EUITouchInfo,是触摸信息中记录起始点位的成员。 |
MovedPosition | Vector2 | - | 触摸移动位置,类型为 Vector2,用于描述触摸交互处于移动阶段时的二维坐标点。该属性属于 EUITouchInfo,是触摸信息中记录移动点位的成员。 |
EndedPosition | Vector2 | - | 触摸结束位置,类型为 Vector2,用于描述一次触摸交互进入结束阶段时的二维坐标点。该属性属于 EUITouchInfo,是触摸信息中记录终止点位的成员。 |
TouchID | Int | - | 触摸点的唯一标识符,用于区分多点触摸。 |
