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

Unity安卓端TouchScreenKeyboard DecimalPad不识别逗号输入问题

解决方案

针对Unity 2022.3.22f1安卓端TouchScreenKeyboard DecimalPad无法识别逗号输入的问题,可尝试以下几种解决方式:

  • 实时替换输入内容
    监听键盘输入文本,将输入的句号自动替换为逗号,同时确保输入格式合规(仅保留一个小数分隔符)。在Update循环中添加如下逻辑:

    void Update()
    {
        if (keyboard != null && TouchScreenKeyboard.visible)
        {
            string inputText = keyboard.text;
            // 先移除已有逗号,再替换句号为逗号,避免重复分隔符
            string processedText = inputText.Replace(",", "").Replace(".", ",");
            // 仅在内容变化时更新,避免死循环
            if (processedText != inputText)
            {
                keyboard.text = processedText;
            }
        }
    }
    
  • 同步设备系统语言设置
    确保安卓设备的系统语言已设置为西班牙语(es-ES)。部分安卓键盘会优先遵循系统语言的小数分隔规则,而非应用内的CultureInfo设置,调整系统语言后可能会让键盘直接响应逗号输入。

  • 自定义数字输入过滤
    放弃使用DecimalPad,改用普通数字键盘(TouchScreenKeyboardType.NumberPad),然后自行实现输入验证逻辑,只允许数字和单个逗号输入:

    keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.NumberPad, false, false, false, false, "", 0);
    
    void Update()
    {
        if (keyboard != null && TouchScreenKeyboard.visible)
        {
            string inputText = keyboard.text;
            // 过滤非数字和逗号的字符
            char[] allowedChars = "0123456789,".ToCharArray();
            string filteredText = new string(inputText.Where(c => allowedChars.Contains(c)).ToArray());
            // 确保只有一个逗号
            int commaIndex = filteredText.IndexOf(',');
            if (commaIndex != -1)
            {
                filteredText = filteredText.Substring(0, commaIndex + 1) + filteredText.Substring(commaIndex + 1).Replace(",", "");
            }
            if (filteredText != inputText)
            {
                keyboard.text = filteredText;
            }
        }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:27:10