Unity:键盘适用于桌面应用程序,但不适用于Android

Unity : Keyboard working for Desktop app but not for Android

提问人:Rohit Singla 提问时间:7/24/2023 更新时间:7/24/2023 访问量:35

问:

我正在尝试在 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]))
{
  ........
  ........
}

它在桌面上运行良好,并从硬件键盘获取输入。

enter image description here

但在 Android 上,默认情况下键盘不会显示。

我手动尝试使用以下代码添加键盘:

    private TouchScreenKeyboard keyboard;

    private void OnGUI()
    {
        keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default);
    }

但它与键盘一起打开了一个输入文本字段。即使在接受输入后,它也不会反映在我的网格中使用相同的 API。Input.GeyKeyDown()

enter image description here

我的要求是什么?

  1. 我希望将输入字母插入到我用于游戏的块中。
  2. 我不希望输入文本字段与Android上的键盘一起显示。

请帮我解决这个问题。我是Unity的新手。但是,我已经浏览了网络上的许多链接。但无法解决这个问题。

Android Unity-Game-Engine 输入

评论


答:

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 = "";