Unity技术问询:如何通过fingerID获取Touch对象?
如何通过fingerID获取对应的Touch对象
Unity并没有提供直接通过fingerID获取Touch对象的API,你需要自己遍历当前所有活跃的触摸点来匹配目标fingerID。
实现方法
可以写一个工具方法,遍历Input.touches数组(该数组存储了当前所有活跃的触摸数据),逐个比对fingerID,找到匹配的Touch对象:
// C# 示例方法,返回可空的Touch类型,支持判断是否找到匹配项 Touch? GetTouchByFingerID(int targetFingerID) { foreach (Touch touch in Input.touches) { if (touch.fingerID == targetFingerID) { return touch; } } // 未找到匹配的触摸时返回null return null; }
使用示例
在需要获取触摸的逻辑中(比如Update方法内)调用上述方法,并处理找到/未找到的情况:
void Update() { int targetID = 1; // 替换为你需要查找的fingerID Touch? matchedTouch = GetTouchByFingerID(targetID); if (matchedTouch.HasValue) { // 成功找到,处理触摸数据 Debug.Log($"匹配触摸位置:{matchedTouch.Value.position}"); // 可以获取触摸的其他属性,比如phase、deltaPosition等 } else { // 未找到对应fingerID的活跃触摸 Debug.Log("未找到目标触摸"); } }
注意事项
Input.touches会在每一帧更新,所以这个方法需要在帧循环(比如Update)中调用,才能获取最新的触摸状态。fingerID是每个触摸操作在其整个生命周期内的唯一标识,当触摸结束(TouchPhase.Ended)后,该fingerID会从Input.touches中移除。
内容的提问来源于stack exchange,提问作者user20640763
相关产品推荐
相关产品推荐

