You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 14:35:33