Unity 关于触摸事件的处理

在Unity 中,要处理触摸事件,主要有以下一些方法:

  1. Input.touches: 这个属性返回一个Touch数组,包含了当前帧中所有的触摸信息,包含触摸的数量、位置和状态等信息。

  2. Input.touchCount: 这个属性返回当前帧中触摸的数量。我们通常会用它来判断是否有触摸事件发生,当touchCount值大于0时,证明有触摸。

  3. Input.GetTouch(index): 这个方法返回指定索引的触摸信息。索引从0开始,最大值为Input.touchCount - 1。使用该方法,我们可获取单个触摸的位置和状态等信息。

  4. Touch.phase: Touch结构体中的phase属性表示触摸的状态。常见的状态有Began(触摸开始)、Moved(触摸移动)、Stationary(触摸静止)和Ended(触摸结束)等。

  5. Touch.position: Touch结构体中的position属性表示触摸的位置。它是一个屏幕坐标,可以使用Camera.ScreenToWorldPoint方法将其转换为世界坐标。

通常我们充分利用好上面方法,就可以处理很多关于触摸的事件了。

比如,我可以通过获取第一个触摸点并监控它开始触摸,移动和结束触摸的事件并做不同的事情:

void Update()
{
    if (Input.touchCount > 0)
    {
        Touch touch = Input.GetTouch(0);

        if (touch.phase == TouchPhase.Began)
        {
            // 触摸开始
            Vector3 touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
            Debug.Log("开始触摸,获取触摸点位置 " + touchPosition);
        }
        else if (touch.phase == TouchPhase.Moved)
        {
            // 触摸移动
            Vector3 touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
            Debug.Log("持续获取触摸点位置" + touchPosition); //这里通常可把位置赋值给UI,那么UI就可以跟随指尖移动
        }
        else if (touch.phase == TouchPhase.Ended)
        {
            // 触摸结束
            Debug.Log("触摸结束,可以做点触摸结束后需要做的事情。");
        }
    }
}

你可能感兴趣的:(unity,游戏引擎,c#)