C# Unity 事件——读取额外的鼠标按钮
C# Unity Event -- Reading Additional Mouse Buttons
我正在通过 Event.current.keyCode
或 Event.current.button
确定 KeyCode
个输入。
当Event.current.isMouse == true
, Event.current.button
只会return 0,1, or 2 (left, right, or middle click)
.
它从不识别 Mouse3 或 4 按钮。
有人知道这方面的信息吗?
这可能是事件 class 的错误或限制。您可以使用 Unity 的输入 class 访问这些按钮。这有点误导,因为您是通过 GetKeyDown 而不是 GetMouseButtonDown 执行此操作的。
public class ButtonTest : MonoBehaviour
{
private void Update()
{
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse0))
{
Debug.Log("Mouse 0");
}
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse1))
{
Debug.Log("Mouse 1");
}
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse2))
{
Debug.Log("Mouse 2");
}
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse3))
{
Debug.Log("Mouse 3");
}
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse4))
{
Debug.Log("Mouse 4");
}
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse5))
{
Debug.Log("Mouse 5");
}
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse6))
{
Debug.Log("Mouse 6");
}
}
}
我运行遇到了同样的问题。 Unity 脚本 API 上给出的示例代码暗示可以通过 Event.button
访问其他鼠标按钮,但是我无法找到访问它们的方法。
using UnityEngine;
public class Example : MonoBehaviour
{
// Detect which mouse button is currently pressed
// and print it.
void OnGUI()
{
Event e = Event.current;
if (e.button == 0 && e.isMouse)
{
Debug.Log("Left Click");
}
else if (e.button == 1)
{
Debug.Log("Right Click");
}
else if (e.button == 2)
{
Debug.Log("Middle Click");
}
else if (e.button > 2)
{
Debug.Log("Another button in the mouse clicked");
}
}
}
如果您出于键配置目的检查所有可能的鼠标键,那么您可以这样做,因为鼠标键代码彼此相邻:
private void OnGUI()
{
KeyCode key;
for (int i = (int)KeyCode.Mouse0; i <= (int)KeyCode.Mouse6; i++)
{
if (Input.GetKey((KeyCode)i))
{
key = (KeyCode)i;
break;
}
}
//do something with the key here
}
这样就不用写出7个if语句,找到关键代码就跳出循环
我正在通过 Event.current.keyCode
或 Event.current.button
确定 KeyCode
个输入。
当Event.current.isMouse == true
, Event.current.button
只会return 0,1, or 2 (left, right, or middle click)
.
它从不识别 Mouse3 或 4 按钮。
有人知道这方面的信息吗?
这可能是事件 class 的错误或限制。您可以使用 Unity 的输入 class 访问这些按钮。这有点误导,因为您是通过 GetKeyDown 而不是 GetMouseButtonDown 执行此操作的。
public class ButtonTest : MonoBehaviour
{
private void Update()
{
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse0))
{
Debug.Log("Mouse 0");
}
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse1))
{
Debug.Log("Mouse 1");
}
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse2))
{
Debug.Log("Mouse 2");
}
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse3))
{
Debug.Log("Mouse 3");
}
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse4))
{
Debug.Log("Mouse 4");
}
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse5))
{
Debug.Log("Mouse 5");
}
if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse6))
{
Debug.Log("Mouse 6");
}
}
}
我运行遇到了同样的问题。 Unity 脚本 API 上给出的示例代码暗示可以通过 Event.button
访问其他鼠标按钮,但是我无法找到访问它们的方法。
using UnityEngine;
public class Example : MonoBehaviour
{
// Detect which mouse button is currently pressed
// and print it.
void OnGUI()
{
Event e = Event.current;
if (e.button == 0 && e.isMouse)
{
Debug.Log("Left Click");
}
else if (e.button == 1)
{
Debug.Log("Right Click");
}
else if (e.button == 2)
{
Debug.Log("Middle Click");
}
else if (e.button > 2)
{
Debug.Log("Another button in the mouse clicked");
}
}
}
如果您出于键配置目的检查所有可能的鼠标键,那么您可以这样做,因为鼠标键代码彼此相邻:
private void OnGUI()
{
KeyCode key;
for (int i = (int)KeyCode.Mouse0; i <= (int)KeyCode.Mouse6; i++)
{
if (Input.GetKey((KeyCode)i))
{
key = (KeyCode)i;
break;
}
}
//do something with the key here
}
这样就不用写出7个if语句,找到关键代码就跳出循环