输入输入键的字符串名称

时间:2019-01-18 12:58:32

标签: c# unity3d

在我的游戏中,用户可以设置一个按键来打开游戏控制台。

我想在游戏中向用户显示信息,他们可以通过按之前设置的键来打开控制台。

例如:

控制台的默认键是f1。然后它应该显示:

  

按F1打开控制台

如果用户设置了C键,则应输入:

  

按C打开控制台

但是我找不到任何方法可以通过代码写下用户之前设置的密钥。

编辑:

对不起,我的意思还不清楚。

我添加了Input-Configuration的屏幕截图(这是默认的Unity Input-Configuration)。

在此配置中,用户可以通过双击OpenConsole(在f1行中)来为Primary设置密钥。

在Unity中,我可以检查是否按下了这样的特定按钮:

if (Input.GetButtonDown("OpenConsole"))
{
...
}

但是我想要的是,我可以向用户显示他们为OpenConsole选择的密钥。像这样:

text.text = "Press the " + WhateverTheUserSet + " Key to open the Console!";

enter image description here

2 个答案:

答案 0 :(得分:0)

好的,关于用户如何设置/更改默认/重新定义的密钥,您的问题尚不清楚,但是我将基于两种情况给出两种解决方案:

方案1:假设您正在通过屏幕上的“重新定义密钥”页面询问用户要使用的密钥。 在这种情况下,您可能会使用Console.ReadKey()来捕获用户的键盘按键。您最终得到的键码可能是键盘上大约100个键之一。您将需要在内部存储键码和“文本”之间的映射。如果他们的用户按下了F1,并且这是键码(例如232),那么您将使用映射为您提供字符串“ F1”,这是您在屏幕上显示的内容。您会将密钥代码存储在config中,以供游戏使用以及游戏启动之间的持久性。

方案2:假设用户在编辑配置文件并在其中设置值。 在这种情况下,您需要以其他方式进行映射。如果配置文件包含(默认情况下):

ConsoleKey=F1

然后,您需要一个类似的内部存储映射,但方向相反。如果用户将值更改为“ A”,则这将需要映射到键控代码(例如65)。用户可以更改配置文件,映射将告诉用户在游戏中要检测哪些键。您可以在屏幕上的“信息”中显示与配置文件中相同的文本。

如果您可以更清楚地了解如何实现此目的,那么我们可以提供更清晰的答案。

答案 1 :(得分:-1)

不幸的是,Unity无法检查从输入管理器分配了哪些键。如果需要更多控制,则需要实现自己的密钥映射解决方案。