Unity:允许键代码随变量移动



我目前正在制作一款故意受挫的迷你游戏,每次使用时移动键都会发生变化。我打算用下面的代码来做这件事。

public class Flop : MonoBehaviour
{
private string[] DirF = new string[] { "r","f","v","t","g","b","y","h","u"};
private string keyF = "y";
void Update()
{
if (Input.GetKeyDown(KeyCode.keyF))
{
// insert code to do a little flop and select a new index to represent keyF
}
}
}

这与我所写的内容有所简化,但本质上使用keyF变量来快速替换跳转命令中的必要输入。最初,我试图将其设置为如上所示的字符串,但很明显,KeyCode命令不接受字符串,而且我不知道可以插入什么变量。

UnityKeyCode枚举似乎与您的用例完美匹配。与其存储一个字符串数组,为什么不只存储一个KeyCodes数组呢?您的代码将更改为以下内容:

public class Flop : MonoBehaviour
{
private KeyCode[] DirF = new KeyCode[] { KeyCode.R, KeyCode.F, KeyCode.V, KeyCode.T, KeyCode.G, KeyCode.B, KeyCode.Y, KeyCode.H, KeyCode.U};
private KeyCode keyF = KeyCode.Y;
void Update()
{
if (Input.GetKeyDown(keyF)) // We don't need to do KeyCode.keyF since keyF variable is already a KeyCode enumeration option
{
(insert code to do a little flop and select a new index to represent keyF)
}
}
}

GetKeyDown方法的参数具有KeyCodestring形式。在您的情况下,只需将密钥的string表示形式传递给GetKeyDown方法,如下所述。因此:

public class Flop : MonoBehaviour
{
private string[] DirF = new string[] { "r","f","v","t","g","b","y","h","u"};
private string keyF = "y";
void Update()
{
if (Input.GetKeyDown(keyF))
{
(insert code to do a little flop and select a new index to represent keyF)
}
}
}

替代方案是存储KeyCode枚举的数组。

public class Flop : MonoBehaviour
{
private KeyCode[] _dirF = new []
{
KeyCode.R, 
KeyCode.F, 
KeyCode.V, 
KeyCode.T, 
KeyCode.G, 
KeyCode.B, 
KeyCode.Y, 
KeyCode.H, 
KeyCode.U
};
private KeyCode _keyF = KeyCode.Y;
void Update ( )
{
if ( Input.GetKeyDown ( _keyF ) )
{
// ...
}
}
}

最新更新