我正在制作自己的 InputManager 以在游戏期间重新映射键。
问题是我已经为每个快捷方式的父级分配了类,当在调试器上按下按钮时,我可以看到来自另一个键的数据。而且只有这把钥匙不断地被一遍又一遍地改变。
这是我的示例:Up是按钮的父级,UpS是按下的按钮,它从其父级调用方法。在每个父子中,它的设置方式与那里相同。
按下按钮我打电话
public void ToggleChangeButtonPannel(Button button)
{
this.ActionText.text = Description;
this.CurrentKeyText.text = Name;
if (Panel.enabled)
{
Panel.enabled = false;
}
else
{
Panel.enabled = true;
}
}
在更新时,我检查面板是否可见。我认为问题可能出在 Update() 方法的规范上。它是否在每个实例上并行工作?如果是这种情况 - 是否可以在 Update() 方法之外使用Input.anyKeyDown ?
private void Update()
{
if (!Panel.enabled)
{
return;
}
if (Input.anyKeyDown)
{
var currentKey = Key;
try
{
var newKey = (KeyCode)System.Enum.Parse(typeof(KeyCode), Input.inputString.ToUpper());
if (Shortcuts.TryChangeKeyCode(currentKey, newKey))
{
RenameButtons(newKey);
}
else
{
//Error message handling
}
}
catch
{
//Error message handling
}
}
}