You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot v4制作打字游戏:如何获取InputEventKey的小写按键字符?

Godot 4 打字游戏获取正确大小写字符的解决方案

问题本质

你遇到的不是Godot的正常行为,是因为你用的get_keycode_with_modifiers()、keycode、key_label这些API本身就不是用来获取实际输入字符的:

  • get_keycode_with_modifiers()返回的是键盘按键对应的原始扫描码ASCII值(比如A键固定对应65,也就是大写'A'),不会考虑Shift键或大写锁定的状态
  • key_label是按键的物理标签名称,同样只显示按键本身的标识,不处理输入的实际字符

正确解决方案

要获取考虑Shift/大写锁定状态的实际输入字符,应该使用InputEventKey的**unicode属性**,它会自动根据当前输入状态返回正确的字符编码。

修改后的代码如下:

func _unhandled_input(event:InputEvent) -> void:
    if event is InputEventKey and not event.is_pressed():
        var typed_event = event as InputEventKey
        # 只处理可打印的ASCII字符,避免输出控制字符(如回车、退格)
        if typed_event.unicode >= 32 and typed_event.unicode <= 126:
            var key_typed = char(typed_event.unicode)
            print(key_typed)

补充说明

  • unicode属性会自动识别当前的输入状态:未按Shift且未开大写锁定时返回小写字符,按下Shift或开启大写锁定时返回大写字符
  • 加上unicode >=32 and <=126的判断是为了过滤掉回车、退格、Tab这类不可打印的控制键,如果你需要处理这些按键,可以单独判断对应的unicode值(比如回车是13,退格是8)

内容的提问来源于stack exchange,提问作者user23033721

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 08:04:53