帮我写一个Unity的按键管理类
时间: 2024-03-08 07:47:24 浏览: 61
好的,下面是一个简单的按键管理类的示例:
```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InputManager : MonoBehaviour
{
public static InputManager instance;
// 定义按键枚举类型
public enum KeyType
{
Jump,
Attack,
Defend,
Interact
}
// 定义按键绑定字典
private Dictionary<KeyType, KeyCode> keyBindings = new Dictionary<KeyType, KeyCode>();
// 初始化
private void Awake()
{
// 创建单例
if (instance == null)
{
instance = this;
}
else if (instance != this)
{
Destroy(gameObject);
}
// 绑定按键
keyBindings.Add(KeyType.Jump, KeyCode.Space);
keyBindings.Add(KeyType.Attack, KeyCode.Mouse0);
keyBindings.Add(KeyType.Defend, KeyCode.Mouse1);
keyBindings.Add(KeyType.Interact, KeyCode.E);
}
// 获取按键状态
public bool GetKey(KeyType key)
{
KeyCode keyCode;
if (keyBindings.TryGetValue(key, out keyCode))
{
return Input.GetKey(keyCode);
}
return false;
}
// 获取按键按下状态
public bool GetKeyDown(KeyType key)
{
KeyCode keyCode;
if (keyBindings.TryGetValue(key, out keyCode))
{
return Input.GetKeyDown(keyCode);
}
return false;
}
// 获取按键抬起状态
public bool GetKeyUp(KeyType key)
{
KeyCode keyCode;
if (keyBindings.TryGetValue(key, out keyCode))
{
return Input.GetKeyUp(keyCode);
}
return false;
}
}
```
在这个示例中,我们定义了一个按键枚举类型,用于表示不同的按键。然后,我们使用一个字典来绑定按键和对应的KeyCode。在初始化时,我们将按键和KeyCode绑定到字典中。最后,我们提供了三个方法,分别用于获取按键的状态、按下状态和抬起状态。这些方法内部会根据按键枚举类型来获取对应的KeyCode,并使用Input类来获取按键状态。这样,我们就可以通过调用这些方法来管理游戏中的按键了。
阅读全文