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
相关产品推荐
相关产品推荐

