【Unity TIL】在 android 下使用 TouchScreenKeyboard 进行输入(一)
一些情况下,可能会有这样的需求,只要调起键盘进行输入,不需要像 UGUI 中那样有一个显示的 Field,这时就直接使用 TouchScreenKeyboard 调动系统输入来处理。
如何使用
- TouchScreenKeyboard.Open 调起 keyboard
- 在 Update 中判断 keyboard 的状态,当不可见并处于 Done 状态时视为输入完成
遇到的问题
在 2018.4.19(我使用的版本)中,唤起 keyboard 后,在 keyboard 外点击,keyboard 收起,不能正确识别为取消输入,导致再次唤起 keyboard 失败,丢失焦点(切换应用到后台再切回来)会刷新。
如何解决
在 keyboard 收起后,同样会有一次焦点的切换,在 OnApplicationFocus 中进行判断,当获得焦点,keyboard 依然处于可视状态时,视为 cancel。
实例
using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Test { private string lastInput = String.Empty; private TouchScreenKeyboard keyboard; // 调起键盘 public void OnChatClick() { // Open 根据需要修改具体的参数 keyboard = TouchScreenKeyboard.Open(lastInput, TouchScreenKeyboardType.ASCIICapable, true, true); } // 处理输入 public void DealInput(string content) { } // 检测输入完毕 private void Update() { if (TouchScreenKeyboard.visible == false && keyboard != null) { if (keyboard.status == TouchScreenKeyboard.Status.Done) { DealInput(keyboard.text); lastInput = String.Empty; keyboard = null; } } } // 因为在 android 上点击键盘外边,会收起但是不会被判定为 cancel // 所以补一个键盘失去焦点的判断 // 2018.4.19 是这样,后边不清楚有没有改 private void OnApplicationFocus(bool hasFocus) { if (hasFocus) { if (keyboard != null && keyboard.status == TouchScreenKeyboard.Status.Visible) { keyboard.active = false; lastInput = keyboard.text; keyboard = null; } } }
参考链接
- HoloLens开发手记 - Unity之Keyboard input 键盘输入 - msp的昌伟哥哥 - 博客园 (cnblogs.com)
- Unity - Scripting API: TouchScreenKeyboard
以下和本文内容无关
TIL,也就是 Today I Learned,实际上就是一个类似于笔记的东西。把一些基础的,比较细枝末节的内容记录整理以下,方便自己以后查找、复习,当然如果能帮到其他人就更好了。同时也算是对自己的一个激励,保持一个学习、记录、思考的状态。
很早之前看到刘未鹏的为什么你应该(从现在开始就)写博客,断断续续尝试过几次,但每次都是三分钟热度。这次决定按着 TIL 的思路还有雨松momo的unity系列博客(相信有很多人都有受到他博客的帮助)那样从最基本的内容开始,先培养一个习惯,希望这次能够坚持下去。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业