Unity全面入门笔记19-其它输入方式

其它输入方式

输入管理器

  • 输入管理器

我们可以在Unity的输入管理器(主界面菜单栏的"Edit"->“Project Settings”->“Input”)当中管理自己的键位,注意,目前Unity的输入管理器是不支持在Android和IOS端游戏中使用的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PNZlQ9n2-1570118974811)(C:\Users\UPiracy\AppData\Roaming\Typora\typora-user-images\1569993835385.png)]

我们可以在脚本中通过Input.GetAxis方法来获得一个Axes的值。在前面我们已经通过这个方法获得过Mouse X、Mouse Y和Mouse ScrollWheel这三个Axis的值。接下来我们再以Horizontal来说明输入管理器的具体用法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2R79ex7Z-1570118974812)(C:\Users\UPiracy\AppData\Roaming\Typora\typora-user-images\1569993871507.png)]

输入器中输入将输入定义为轴,保存值为-1到1的浮点数,对应两个不同的操作,一个是使该值向正向增加的输入,一个是使该值向负向增加的输入。

Name是轴的名称,就是在脚本中使用Input.GetAxis方法时作为参数的名称。这个属性也会在使用PC中打开Unity游戏时作为出现在选项菜单中的名字。通过在输入管理器设置按键,我们也可以给玩家提供自定义按键的接口(仅限PC端):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E0Q7yZBK-1570118974813)(C:\Users\UPiracy\AppData\Roaming\Typora\typora-user-images\1570074408432.png)]

如果在输入管理器中没有填写Descriptive Name和Descriptive Negative Name,那么就会在自定义接口中显示为(+)和(-)。这两个名称只对开启游戏时的界面有效。

输入管理器中的Type可以选择侦测的是按键、鼠标行为还是摇杆行为。其中,在Type中使用Mouse Movement时,可以在Axis中选择X axis代表鼠标的X轴位移,Y axis代表鼠标的Y轴位移,3rd axis代表鼠标的滚轮。当Type中选择使用Joystick Axis时可以用X axis代表摇杆的横输入,Y axis代表摇杆的纵输入。

在Key or Mouse Button中,我们可以在Negative Button和Alt Negative Button中填写提供负方向值的按键的值,而在Positive Button和Alt Positive Button中填写提供正方向值的按键的值。

Sensitivity属性对应的是按下键位时Axis改变的速率,Gravity对应的时擡起键位后Axis复原为0的速率。默认情况下,需要平滑的键位,这两个属性都被设置为3,而需要及时响应的按键(如开火键)则都被设置为1000。

Snap属性使响应速度加快,一旦按下按键,如果当前轴值和输入的方向符号不同,会先将轴值归零,再开始逐步增加值的大小。

Dead属性是用于防止在使用摇杆等输入设备时发生的抖动情况。在输入值的绝对值小于等于该属性值时,系统会将输入值重置为0。在使用摇杆或鼠标偏移时忘了设置Dead,可能会导致被控制的角色在微小距离内剧烈抖动,影响观感。

Invert属性表示会将Positive和Negative属性反置,即本应使轴值增加的会导致轴值减少,而本应使轴值减少的会导致轴值增加。

OnMouseXXX事件

private void MonoBehaviour.OnMouseEnter();

OnMouseEnter:在用户的鼠标指针移入该物体的Collider或GUI的一帧触发,不需要按下鼠标左键。

private void MonoBehaviour.OnMouseOver();

OnMouseOver:在用户的鼠标指针保持在该物体的Collider或GUI的期间连续触发,不需要按下鼠标左键。

private void MonoBehaviour.OnMouseExit();

OnMouseExit:在用户的鼠标指针离开该物体的Collider或GUI的一帧触发,不需要按下鼠标左键。

private void MonoBehaviour.OnMouseDown();

OnMouseDown:在用户的鼠标指针在该物体的Collider或GUI上按下鼠标左键的一帧触发。

private void MonoBehaviour.OnMouseDrag();

OnMouseDrag:在用户的鼠标指针在该物体的Collider或GUI上按下鼠标左键,并不断保持按压期间连续触发。

private void MonoBehaviour.OnMouseUp();

OnMouseUp:在用户的鼠标左键擡起的一帧触发,注意,该事件和OnMouseDown配对产生,就算鼠标擡起时指针已经离开这个物体也会产生响应。

private void MonoBehaviour.OnMouseUpAsButton();

OnMouseUpAsButton:这个事件在鼠标左键擡起时的一帧触发,该事件鼠标擡起时的物体必须是鼠标按下时的同一个物体。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章