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

如何在DragonRuby Game Toolkit中捕获用户输入的文本?

优化游戏文本输入功能(无需手动转换特殊字符)

需求是实现玩家文本输入功能,支持常规文本、Shift组合生成的特殊字符(如!、?),以及退格删除内容。当前代码需要手动映射各类特殊字符,这里提供更简洁的优化方案:

原实现代码

def defaults(args)
  args.state.text_box_message ||= ""
end

def input(args)
  key_information = args.inputs.keyboard.truthy_keys
  # is this a meta/system key? ignore it then
  letter = (key_information - [:raw_key, :shift, :char]).first.to_s
  if %w(alt meta control control_right control_left shift shift_left shift_right escape tab meta_left meta_right).include?(letter)
    return
  end
  letter = "?" if letter == "question_mark"
  letter = "!" if letter == "exclamation_point"
  letter = " " if letter == "space"
  letter = "_" if letter == "underscore"

  if key_information.include?(:backspace) || key_information.include?(:delete)
    args.state.text_box_message = args.state.text_box_message.chop
  else
    if letter
      if key_information.include?(:shift) || args.state.last_key_info.include?(:shift)
        # uppercasing the letter
        letter = letter.upcase
      else
        letter = letter.downcase
      end
      args.state.text_box_message = args.state.text_box_message.concat(letter)
    end
  end
  args.state.last_key_info = key_information unless key_information.empty?
end

优化方案

直接使用框架提供的args.inputs.keyboard.char属性,它已经自动处理了Shift组合键对应的特殊字符、大小写转换,无需手动映射:

def defaults(args)
  args.state.text_box_message ||= ""
end

def input(args)
  # 处理退格/删除键,避免空字符串时调用chop报错
  if args.inputs.keyboard.backspace || args.inputs.keyboard.delete
    args.state.text_box_message = args.state.text_box_message.chop unless args.state.text_box_message.empty?
    return
  end

  # 获取自动处理后的输入字符
  typed_char = args.inputs.keyboard.char
  if typed_char && !typed_char.empty?
    args.state.text_box_message += typed_char
  end
end

优化点说明

  • 无需手动维护特殊字符映射:char会直接返回Shift组合对应的结果(如Shift+1返回!、Shift+/返回?)
  • 自动处理大小写:按Shift+字母会直接返回大写字符,无需手动判断Shift状态
  • 代码更简洁,减少冗余逻辑,降低后续维护成本
  • 增加空字符串判断,避免退格时出现错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:40:54