在我的游戏中,用户可以设置一个按键来打开游戏控制台。
我想在游戏中向用户显示信息,他们可以通过按之前设置的键来打开控制台。
例如:
控制台的默认键是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!";
答案 0 :(得分:0)
好的,关于用户如何设置/更改默认/重新定义的密钥,您的问题尚不清楚,但是我将基于两种情况给出两种解决方案:
方案1:假设您正在通过屏幕上的“重新定义密钥”页面询问用户要使用的密钥。
在这种情况下,您可能会使用Console.ReadKey()
来捕获用户的键盘按键。您最终得到的键码可能是键盘上大约100个键之一。您将需要在内部存储键码和“文本”之间的映射。如果他们的用户按下了F1,并且这是键码(例如232),那么您将使用映射为您提供字符串“ F1”,这是您在屏幕上显示的内容。您会将密钥代码存储在config中,以供游戏使用以及游戏启动之间的持久性。
方案2:假设用户在编辑配置文件并在其中设置值。 在这种情况下,您需要以其他方式进行映射。如果配置文件包含(默认情况下):
ConsoleKey=F1
然后,您需要一个类似的内部存储映射,但方向相反。如果用户将值更改为“ A”,则这将需要映射到键控代码(例如65)。用户可以更改配置文件,映射将告诉用户在游戏中要检测哪些键。您可以在屏幕上的“信息”中显示与配置文件中相同的文本。
如果您可以更清楚地了解如何实现此目的,那么我们可以提供更清晰的答案。
答案 1 :(得分:-1)
不幸的是,Unity无法检查从输入管理器分配了哪些键。如果需要更多控制,则需要实现自己的密钥映射解决方案。