【发布时间】:2021-11-03 10:04:48
【问题描述】:
我正在使用 TMP 输入字段并希望覆盖一些默认行为。具体来说,当一个字母被按住时,它会重复。同样,当按下退格(或删除)时,它会删除多个字符。
我希望这样,如果一个字母被按住,该字母只输入一次。我还希望退格键仅在按住时删除一个字符。
我已经在实现Input.GetKeyDown() 来执行某项任务,所以我相信我需要在这里做类似的事情,但我不知道如何做。
谢谢。
编辑:
感谢@daniel-m。这有时有效,但有时它允许 1 或 2 个重复字母。
我添加了额外的 Debug.Logs 进行调查,如下所示:
private void Update()
{
if (IsFieldSelected)
{
// if a key is pressed
if (Input.anyKeyDown)
{
// save the the current text to lastText (this key will have been entered)
lastText = inputField.text;
Debug.Log("Key was pressed! inputField = " + inputField.text + ", inputField = " + lastText);
}
// if a key is held down
if (Input.anyKey)
{
Debug.Log("Key held down, part 1! inputField = " + inputField.text + ", inputField = " + lastText);
inputField.text = lastText;
Debug.Log("Key held down, part 2! inputField = " + inputField.text + ", inputField = " + lastText);
}
}
}
我用以下 Keydown 和 Keyup 时间戳(记录在不同的脚本中)连续按住键 1 到 6:
文本框中的输出是 1122334456。您可以在下面的调试日志中看到向 inputField.text 添加了重复。但是,它并不总是出现在输入字段中 - 数字 1-4 重复但 5 和 6 没有。当数字确实重复时,它们不会出现在输入字段中,直到释放键(即使调试日志显示它已经存在)。
【问题讨论】:
-
Specifically, when a letter is held down, it repeats. Similarly, when backspace (or delete) is held down, it removes multiple characters.这与您的输入设备有关..这是任何程序中任何PC键盘的正常行为
标签: c# unity3d input-field textmeshpro