使用 Unity 的新输入系统检测鼠标滚轮滚动输入
Detect Mouse Wheel Scrolling Input with Unity`s new Input System
我目前正在尝试为我目前在 Unity 引擎中进行的 2D 游戏检测鼠标滚轮滚动输入。
我正在使用新的输入系统,但我目前受困于以下代码。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem.Controls;
public class ZoomController : MonoBehaviour
{
private PlayerControls playerControls;
private void Awake()
{
playerControls = new PlayerControls();
}
private void OnEnable()
{
playerControls.Enable();
}
private void OnDisable()
{
playerControls.Disable();
}
void Start()
{
}
void Update()
{
if (playerControls.Land.Zoom.ReadValue<Vector2>().y >= 1)
{
Debug.Log("Scroll 1");
} else if (playerControls.Land.Zoom.ReadValue<Vector2>().y <= -1)
{
Debug.Log("Scroll 2");
}
}
}
如果我 运行 代码没有任何反应,我不知道为什么。
如果您将滚轮视为“一维轴”,您需要告诉 Unity 哪一侧(向上或向下)应该获胜。否则,您将只会收到一个始终为 0 的平均值。
另一种更好的选择是让值通过并添加“绑定”。
请注意,默认滚动值在大多数系统上是 120,但在 Linux 上似乎是 1。因此我建议简单地检查该值是大于还是小于 0 来决定它是否是向上或向下滚动。
float z = zoom.ReadValue<float>();
if (z > 0)
Debug.Log("Scroll UP");
else if (z < 0)
Debug.Log("Scroll DOWN");
单独使用代码你可以做到这一点:
Vector2 vec = Mouse.current.scroll.ReadValue();
scroll = vec.y
我目前正在尝试为我目前在 Unity 引擎中进行的 2D 游戏检测鼠标滚轮滚动输入。
我正在使用新的输入系统,但我目前受困于以下代码。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem.Controls;
public class ZoomController : MonoBehaviour
{
private PlayerControls playerControls;
private void Awake()
{
playerControls = new PlayerControls();
}
private void OnEnable()
{
playerControls.Enable();
}
private void OnDisable()
{
playerControls.Disable();
}
void Start()
{
}
void Update()
{
if (playerControls.Land.Zoom.ReadValue<Vector2>().y >= 1)
{
Debug.Log("Scroll 1");
} else if (playerControls.Land.Zoom.ReadValue<Vector2>().y <= -1)
{
Debug.Log("Scroll 2");
}
}
}
如果我 运行 代码没有任何反应,我不知道为什么。
如果您将滚轮视为“一维轴”,您需要告诉 Unity 哪一侧(向上或向下)应该获胜。否则,您将只会收到一个始终为 0 的平均值。
另一种更好的选择是让值通过并添加“绑定”。
请注意,默认滚动值在大多数系统上是 120,但在 Linux 上似乎是 1。因此我建议简单地检查该值是大于还是小于 0 来决定它是否是向上或向下滚动。
float z = zoom.ReadValue<float>();
if (z > 0)
Debug.Log("Scroll UP");
else if (z < 0)
Debug.Log("Scroll DOWN");
单独使用代码你可以做到这一点:
Vector2 vec = Mouse.current.scroll.ReadValue();
scroll = vec.y