如何使用鼠标滚轮每次选择另一个工具?

时间:2017-06-08 21:51:09

标签: c# unity3d unity5

private void OnEnable()
{
    Tools.current = Tool.View;
    Tools.viewTool = ViewTool.FPS;
}

工具有一些属性,如Rect,Scale,Rotate ...... 我想使用鼠标滚轮向下选择工具属性。

2 个答案:

答案 0 :(得分:1)

不是很复杂。

1 。使用Input.GetAxisRaw而不是Input.GetAxis读取鼠标滚动输入,因为使用Input.GetAxis会平滑您不需要的滚动值。< / p>

2 。检查滚动值是否超过某个阈值。如果是,则鼠标滚轮向上滚动。如果它小于那个值,那么它就会向下滚动。

3 。结果#2 ,创建一个名为“level”的全局整数,您可以根据滚轮的方向递增或递减。

4 Tool枚举值从-1开始到4,因为它的声明如下:

public enum Tool
{
    None = -1,
    View = 0,
    Move = 1,
    Rotate = 2,
    Scale = 3,
    Rect = 4
}

将“strong”变量从#3 钳制到-14之间的值Mathf.Clamp(level, -1, 4);

5 。最后,将int“level”变量强制转换为Tool枚举,并将结果分配给Tools.current

使用int来强制转换为Tool枚举可以防止使用许多if或switch语句。

float wheelThreshold = 0.09f;
int level = -1;

void Update()
{
    level = (int)Tools.current;

    float mouseScrollDir = Input.GetAxisRaw("Mouse ScrollWheel");

    if (mouseScrollDir > wheelThreshold)
    {
        Debug.Log("Scroll Up");
        level++;
        level = Mathf.Clamp(level, -1, 4);
        Tools.current = (Tool)level;
    }
    else if (mouseScrollDir < -wheelThreshold)
    {
        Debug.Log("Scroll Down");
        level--;
        level = Mathf.Clamp(level, -1, 4);
        Tools.current = (Tool)level;
    }
}

<强>结果

enter image description here

答案 1 :(得分:0)

如果您使用的是统一应用,可以试试这个:

 var d = Input.GetAxis("Mouse ScrollWheel");
 if (d > 0f)
 {
     // scroll up
 }
 else if (d < 0f)
 {
     // scroll down
 }

source