如何快速给 Unity WebGL 加上原生输入框:WebGLInput 完整上手指南
【免费下载链接】WebGLInputIME for Unity WebGL项目地址: https://gitcode.com/gh_mirrors/we/WebGLInput
把 Unity 游戏发布到 WebGL 后,登录页的 InputField 能看见、敲不进:中文打不出来,复制粘贴失效,手机上软键盘也不弹。WebGLInput 就是为此做的输入法桥接——装上去,输入框直接复用浏览器原生键盘,中文 IME、复制粘贴、Tab 切换、移动端全部可用。
项目速览
- 名称:WebGLInput(GitHub 开源项目 kou-yeung/WebGLInput)
- 定位:IME for Unity WebGL,给 InputField / TMP_InputField 挂上浏览器原生输入能力
- 语言:C# + JavaScript(jslib)
- 附带能力:复制粘贴、Tab/Shift+Tab 切换焦点、移动端(实验性)、UI Toolkit(Unity 2022+,实验性)
📦 1 分钟导入 WebGLSupport
做完这节,你的 Unity 工程里会多出 WebGLInput 组件,可直接拖到 GameObject 上。
- 从项目 Releases 下载 WebGLSupport.unitypackage;或执行
git clone https://gitcode.com/gh_mirrors/we/WebGLInput,把 Assets/WebGLSupport 拷进工程。 - 菜单 Assets → Import Package → Custom Package。
- 选中 unitypackage,点击 Import。
- 完成,Assets 下出现 WebGLSupport 文件夹。
🎯 3 步让输入框接上键盘
做完这节,WebGL 发布页里点输入框会调出浏览器原生键盘,内容实时同步回 InputField。
- 选中挂了 InputField(或 TMP_InputField)的 GameObject。
- Add Component,搜 WebGLInput,添加。
- 构建 WebGL 版本,浏览器打开发布页点击输入框。
零配置:组件自动识别输入框类型,placeholder、字符上限、密码模式都会同步。想要画布上可见的原生输入框并支持拖拽选中文本,勾选 WebGLInput 的 showHtmlElement 即可。
⌨️ 让 Tab 键改插制表符
默认 Tab / Shift+Tab 在输入框之间切换焦点。需要按 Tab 输入 \t 时:
- Project Settings → Player 的 Scripting Define Symbols 加
WEBGLINPUT_TAB。 - WebGLInput 组件勾选 Enable Tab Text。
- 重新构建验证。
📱 移动端软键盘与 UI Toolkit 接入
做完这节,手机点输入框能弹软键盘,UI Toolkit 的 TextField 也能打字。
- 移动端:发布构建即可。移动端下 WebGLInput 会自动挂载 WebGLInputMobile 处理触摸聚焦;移动端输入被禁用的输入框,组件会自我关闭。功能为实验性质,真机务必自测。
- UI Toolkit(Unity 2022+):给每个 TextField 挂上 manipulator:
uiDocument.rootVisualElement.Query<TextField>() .ForEach(v => v.AddManipulator(new WebGLInputManipulator()));⚠️ 避坑清单
编辑器里打字没反应
- 现象:Play 模式点输入框无反应
- 原因:组件仅在 WebGL 构建目标启用
- 处理:构建 WebGL 后到浏览器验证
报 "Can not Setup WebGLInput!!"
- 现象:启动即抛异常
- 原因:WebGLInput 所在 GameObject 没有输入组件
- 处理:与 InputField/TMP_InputField 挂在同一对象上
Tab 键只会切焦点
- 现象:想输制表符却跳走了
- 原因:宏开关未启用
- 处理:加 WEBGLINPUT_TAB 并勾选 Enable Tab Text
收尾
适用场景:Unity 2018.2+、面向 WebGL 发布、需要文本输入的游戏(登录、聊天、改名)。不适用场景:原生平台——那里原生输入框本来就好使,WebGLInput 会直接停用。更多细节(全屏 API、Default/Minimal/PWA 三种 DEMO)去 WebGLInput 项目主页看。
【免费下载链接】WebGLInputIME for Unity WebGL项目地址: https://gitcode.com/gh_mirrors/we/WebGLInput
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考