创建游戏内文本框

Create an in-game TextBox

所以我正在尝试在我的游戏中实现用户名系统,为此我需要让用户输入他们想要的用户名。我创建了一个 TextBox class.

编辑

在进一步研究其他人在游戏中创建 TextBox 的经验以及他们的方法后,我得出以下结论:

一旦我弄明白了,我将重新访问当前代码,看看我可以回收哪些,然后废弃其余部分。

我觉得是输入问题:

if (MainGame.InputManager.IsKeyPressed(keys))
{
    keys = MainGame.InputManager.PressedKeys;

如果我没理解错的话,这个字面意思是"if any of the keys pressed last frame is pressed, then do check for input",它总是错误的。删除 if 语句应该可以解决这种情况下的问题。

我不太明白 StringBuilder 的用法。 StringBuilder 用于低垃圾生成的字符串修改,但您通过调用 ToString 并在每次按键时更新重复的字符串来否定它。此外,如果字符串长度超过最大长度,您将截断显示的 final 字符串而不是 content,从而使它们不同步。我只想直接修改 final

使用 char.IsLetterOrDigit 最容易检测字母数字字符。

如果您想复制 WinForms 行为,您还可以查看 GameWindow.OnTextInput