Skip to main content
AR论坛
 首页 » 资源教程 » Unity3D教程

【Unity】7.5 移动设备输入

2016年11月05日 14:25:411090

一、简介

在iOS和Android系统中,操作都是通过触摸来完成的。Input类中对触摸操作的方法或变量如下图所示:

【Unity】7.5 移动设备输入 Unity3D教程 第1张

通过GetTouch或者touches可以访问移动没备的触摸数据,数据保存在Touch的结构体中。下图是Touch的结构体变量:

【Unity】7.5 移动设备输入 Unity3D教程 第2张

二、基本用法示例

1、示例1(遍历所有Touch并输出Touch的信息)

void OnGUI()

{

//遍历所有Touch

foreach(Touch touch in Input.touches)

{

//输出Touch信息

GUILayout.Label(string.Format("手指:{0} 状态:{1} 位置:{2}",touch.fingerId,touch.phase.ToString(),touch.position));

}

}

2、示例2(Demo5_2_MobileExample.unity)

该例子演示如何打印当前触摸屏幕的手指数量。

下面是MobileExample.cs文件中的代码:

【Unity】7.5 移动设备输入 Unity3D教程 第3张

using UnityEngine;using System.Collections;publicclass MobileExample : MonoBehaviour
{    //定义手指在触摸屏上的数量publicint fingerCount = 0;    void Update()
    {        foreach (var touch in Input.touches)
        {            if (touch.phase != TouchPhase.Ended && touch.phase != TouchPhase.Canceled)
                fingerCount++;
        }        if (fingerCount > 0)
            print("用户有 " + fingerCount + " 手指触摸了屏幕");
    }    void OnGUI()
    {        //输出手指在触摸屏上的数量至界面中
        GUILayout.Label("手指数量:" + fingerCount);
    }
}

【Unity】7.5 移动设备输入 Unity3D教程 第4张

运行预览效果:

【Unity】7.5 移动设备输入 Unity3D教程 第5张

3、示例3(Demo5_3_MobileMoveExample.unity)

该例子演示如何根据手指在屏幕上的滑动来移动物体。

MobileMoveExample.cs文件的代码如下:

【Unity】7.5 移动设备输入 Unity3D教程 第6张

using UnityEngine;using System.Collections;publicclass MobileMoveExample : MonoBehaviour
{    publicfloat speed = 0.1f;    void Update()
    {        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)
        {            // 得到手指在这一帧的移动距离
            Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;            // 在XY平面上移动物体
            transform.Translate(-touchDeltaPosition.x * speed, -touchDeltaPosition.y * speed, 0);
        }
    }
}

【Unity】7.5 移动设备输入 Unity3D教程 第7张

运行预览效果和示例2的截图相同。


评论列表暂无评论
发表评论