Unity3d C# 实现UGUI 输入框调用软键盘输入的完整功能(含工程源码,适用触屏一体机等)
2023-09-27 14:27:29 时间
前言
如题的需求经常会在甲方的需求中出现,比如一体机上,大多客户会不选择键盘和鼠标,因为觉得比较low的可能。自己弄一个内置UI键盘的话也是可行的,只不过可能就英文输入好实现,实现带中文的输入可能就比较难了,所以想到了一个中间的方式调用软键盘,可支持中文输入,目前的实现可能仅支持Windows系统。
效果
调起输入的效果:
支持中文的效果:
实现
搭建UI
UI搭建比较简单主要就是一个输入框(InputField),如图的搭建:
调起小键盘
直接使用Process.Start();来启动小键盘程序:
proc = Process.Start(@"C:\Windows\System32\osk.exe");
参数是小键盘运行程序的路劲。
关闭小键盘
我们在调起小键盘时记录了小键盘的process,关闭时将调用CloseMainWindow函数即可
proc.CloseMainWindow();
调起和关闭之间的输入环节和正常的物理键盘输入无异。
事件绑定
我们在输入结束是,通过输入结束事件将键盘关闭:
input.onEndEdit.AddListener(EditEnd);
这个直接使用了,输入框的结束编辑事件,比较方便就实现了。
用户在点击或者选中输入框时,调起小键盘,这个的实现需要借助EventTrigger来实现:
et.triggers = new List<EventTrigger.Entry>(); // 新建委托列表
EventTrigger.Entry Sel = new EventTrigger.Entry(); // 注册事件
Sel.eventID = EventTriggerType.Select; // 设置事件类型
Sel.callback = new EventTrigger.TriggerEvent(); // 设置callback
Sel.callback.AddListener(new UnityAction<BaseEventData>(OnSelectIpt)); // 事件绑定
et.triggers.Add(Sel);
这里监听了选中事件(EventTriggerType.Select),理论上点击(EventTriggerType.PointerClick)应该也可以。
项目源码
相关文章
- C#中直接调用halcon的.hdev文件的函数【附源码】
- 基于CNTK/C#实现逻辑回归【附源码】
- 基于CNTK/C#实现Cifar【附源码】
- 使用 vscode 编写 c# 未能找到类型或命名空间名称
- C# 根据路线点集合动态分段
- OpenCvSharp (C# OpenCV) 指针方法读取和修改图像像素值(附源码)
- OpenCvSharp (C# OpenCV) 微信QRCode解码功能使用介绍(附源码)
- OpenCvSharp (C# OpenCV)实现多角度模板匹配->(详细步骤 + 源码)
- OpenCvSharp (C# OpenCV) 带掩码(mask)的模板匹配使用技巧与演示(附源码)
- OpenCVSharp(C# OpenCV)图片自动生成彩虹特效(附源码)
- C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper(三:附源码)
- Unity3d C# 基于UGUI实现类似WX聊天气泡功能(含源码)
- Unity3d C# UGUI实现一个自动循环滚动的列表(ScrollRect)的功能(含工程源码)
- Unity3d C# UGUI实现中文输入法支持中英文切换功能(含工程源码)
- Unity3d C# 代码动态改变/更新图表插件(Graph And Chart )的折线图、柱状图和饼图等图表数据和动画等(含源码)
- Unity3d C# 实现两点的画线和测距效果功能(含源码)
- .NET(C#) lock 和 ReaderWriterLock 的使用总结
- .NET(C#) 匿名类
- C# 从零开始写 SharpDx 应用 初始化dx修改颜色
- C#中用RichTextBox实现图文混排和保存的例子