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

Godot开发:自定义可输入文本框退格键无法删除字符问题

问题分析

你用visible_characters -= 1处理退格的方式是错误的——这个属性仅控制显示的字符数量,并未真正删除RichTextLabel内的文本内容。按下退格后只是少显示一个字符,但实际的bbcode文本仍存在,所以看起来没有删除效果。

修复方案

1. 真正删除文本内容

修改退格分支的代码,直接操作bbcode_text截取掉最后一个字符:

KEY_BACKSPACE:
    if Text.bbcode_text.length() > 0:
        # 截取文本到倒数第二个字符,实现删除最后一个内容
        Text.bbcode_text = Text.bbcode_text.left(Text.bbcode_text.length() - 1)

2. 优化按键重复触发问题

按住退格键时Godot会重复发送按键事件,若想避免连续快速删除,可添加判断只处理非重复的按下事件:

func _unhandled_input(event):
    if event is InputEventKey and event.pressed and not event.is_repeat():
        match event.scancode:
            KEY_A:
                Text.append_bbcode("a")
            KEY_BACKSPACE:
                if Text.bbcode_text.length() > 0:
                    Text.bbcode_text = Text.bbcode_text.left(Text.bbcode_text.length() - 1)

3. 额外建议

如果是做文本输入功能,更推荐使用Godot内置的LineEdit(单行输入)或TextEdit(多行输入)控件,它们自带完善的输入、退格、光标等处理逻辑,无需手动实现按键事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:35:34