提问人:Rohit Singla 提问时间:7/24/2023 更新时间:7/24/2023 访问量:35
Unity:键盘适用于桌面应用程序,但不适用于Android
Unity : Keyboard working for Desktop app but not for Android
问:
我正在尝试在 Unity 中开发一个像 Wordle 这样的游戏,它应该有一个块网格,每个块都应该能够将一个字母作为输入并在该块上显示。
我正在使用此代码来获取输入。
private static readonly KeyCode[] SUPPORTED_KEYS = new KeyCode[] {
KeyCode.A, KeyCode.B, KeyCode.C, KeyCode.D, KeyCode.E, KeyCode.F,
KeyCode.G, KeyCode.H, KeyCode.I, KeyCode.J, KeyCode.K, KeyCode.L,
KeyCode.M, KeyCode.N, KeyCode.O, KeyCode.P, KeyCode.Q, KeyCode.R,
KeyCode.S, KeyCode.T, KeyCode.U, KeyCode.V, KeyCode.W, KeyCode.X,
KeyCode.Y, KeyCode.Z
};
if(Input.GetKeyDown(SUPPORTED_KEYS[i]))
{
........
........
}
它在桌面上运行良好,并从硬件键盘获取输入。
但在 Android 上,默认情况下键盘不会显示。
我手动尝试使用以下代码添加键盘:
private TouchScreenKeyboard keyboard;
private void OnGUI()
{
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default);
}
但它与键盘一起打开了一个输入文本字段。即使在接受输入后,它也不会反映在我的网格中使用相同的 API。Input.GeyKeyDown()
我的要求是什么?
- 我希望将输入字母插入到我用于游戏的块中。
- 我不希望输入文本字段与Android上的键盘一起显示。
请帮我解决这个问题。我是Unity的新手。但是,我已经浏览了网络上的许多链接。但无法解决这个问题。
答:
0赞
Jay
7/24/2023
#1
没有一种干净而完美的方法可以做到这一点。
首先,输入可以隐藏
TouchScreenKeyboard.hideInput = true;
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default);
在此模式下,android 键盘似乎不会发送输入事件。你可以做的是每一帧轮询它
(代码未经测试,但希望这应该为您指明正确的方向)
// in some update loop
var text = keyboard.text;
if(string.IsNullOrEmpty(text))
continue;
SetInput(text);
keyboard.text = "";
评论