目录
前言
本篇笔记用于记录唐老狮视频课程的学习心得
输入对于一个应用来说至关重要!一般输入都是写在Update里面的。Unity里面和输入的内容都是在Input这个静态类里面的。
鼠标在屏幕位置
我们的鼠标位置都是存储在Input.mousePosition里面的。
不过要特别注意的虽然他是一个Vector3类型的值,但是只有xy有数值,z一直是0,还有屏幕的原点是在左下角。
我们可以通过如下代码获取鼠标的位置。
print(Input.mousePosition);
检测鼠标输入
鼠标按下瞬间触发
我们用Input.GetMouseButtonDown来接受输入,他是一个bool类型的返回值,如果按下了就会返回true。
if(Input.GetMouseButtonDown(0))
{
//按下鼠标左键后执行逻辑
}
参数 | 按键 |
0 | 左键 |
1 | 右键 |
2 | 滚轮 |
3 | 侧键1 |
4 | 侧键2 |
鼠标抬起瞬间触发
抬起和按下同理,是Input.GetMouseButtonUp。
if(Input.GetMouseButtonUp(0))
{
//按下鼠标左键后执行逻辑
}
鼠标长按按下抬起都会触发
这个是只要按下就会触发,一直按住一直触发,详情参考长按开镜瞄准。
我们用的是Input.GetMouseButton。
if(Input.GetMouseButton(0))
{
//按下鼠标左键后执行逻辑
}
滑轮滚动
我们可以通过Input.mouseScrollDelta来获取滑轮滚动状态,他是一个Vector3类型的值,当滚动时,其中y值会发生变化。
print(Input.mouseScrollDelta);
y值 | 状态 |
-1 | 向下滚 |
0 | 不动 |
1 | 向上滚 |
如果你有横着滚得滑轮的话,那改变的可能是x值。
检测键盘输入
键盘按下抬起长按触发
键盘按下其实完全和鼠标是一模一样的,就是Down、Up还有去掉他们,这三个,完全一样,就是多了一个枚举就是KeyCode,不过也很简单,一看就明白了,比如下面的代码就是A键按下瞬间执行代码。
if(Input.GetKeyDown(KeyCode.A)){
//执行逻辑
}
字符串重载
我们当然也可以直接输入字符串来当做参数,不过要注意的是必须输入小写,大写是不可以的。
if(Input.GetKeyDown("a")){
//执行逻辑
}
检测默认轴输入
我们学习鼠标键盘输入主要是为了控制玩家,所以Unity给我们更方便的方法。
名称 | 操作 | 返回值 |
Input.GetAxis("Horizontal"); | 键盘AD按下时 | -1~1 |
Input.GetAxis("Vertical"); | 键盘SW按下时 | -1~1 |
Input.GetAxis("Mouse X"); | 鼠标横向移动时 | -1~1 |
Input.GetAxis("Mouse Y"); | 鼠标竖向移动时 | -1~1 |
注意,这里面字符串的值并不是固定的,而是可以去设置的。可以去Edit->Project Settings ->Input Manager里面自己设置。
不过我们还可以用Input.GetAxisRaw,他和上面那个是一样的,唯一区别是,这个没有中间值,只有-1、0和1。
其他
任意键按下
这个用Input.anyKey来表示,和上面说过的方法是一样的,不过他没有Up类型的。
if(Input.anyKey){
//执行逻辑
}
并且我们可以和Input.inputString来获取我们当前按下的究竟是什么按键,可以完成改建的功能。
if(Input.anyKey){
print(Input.inputString);
}
手柄输入
得到链接手柄的所有按键名字
string[] strs = Input.GetJoystickNames();
手柄按键按下抬起长按
我们用Input.GetButton方法来表示手柄按键的按下抬起长按,具体三个也是和之前键盘鼠标的方法命名模式是一样的,我们可以用这个和上面获取按键名字配合起来。
if(Input.GetButton("x"))
{
//执行逻辑
}
移动设备输入
我们一般用Input.touchCount来判断当前屏幕上有没有被触摸,如果这个数值大于0,就说明又被触摸的点,然后再去执行接下来的逻辑。
if(Input.touchCount > 0)
{
Touch t1 = Input.touches[0];
//位置
print(t1.position);
//相对于上次位置的变化
print(t1.deltaPosition);
}
是否启用多点触控
如果要启用多点触控那么我们首先要Input.multiTouchEnabled设置为true,
Input.multiTouchEnabled = true;
陀螺仪
在使用前,我们同理,也是要将其
Input.gyro.enabled = true;
重力加速度向量
print(Input.gyro.gravity);
旋转速度
print(Input.gyro.rotationRate);
陀螺仪 当前的旋转四元数
print(Input.gyro.attitude);
总结
Input类提供了大部分和输入有关的内容,鼠标、键盘、触屏、手柄和重力感应。
文章仅用于学习使用,如果有错误请指出,一起进步,谢谢!